XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Необходимо ли удаление, при получении данных из ф-ции
Добрый день.
В некой функции А создаются в начале игры ректы и записываются в массив.
Во время каста заклинаний я отправляю в функцию координаты чтобы получить рект:
rect Return_Rect(real x,real y) {
    int i=0
    loop
    exitwhen i >399 or (GetRectMinX(SqRect[i]) <= x) and (x <= GetRectMaxX(SqRect[i])) and (GetRectMinY(SqRect[i]) <= y) and (y <= GetRectMaxY(SqRect[i]))
    i++
    endloop
    return SqRect[i] }

void CastSpell() {
rect r = Return_Rect(GetLocationX(GetSpellTargetLoc()),GetLocationY(GetSpellTargetLoc()))
//после выполнения действия нужно ли писать RemoveRect(r)? или рект р просто получил ссылку на хендл ректа созданного вначале
r=null
}
Старый 28.07.2010, 15:41
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
AlexKARASb, нужно.
Старый 28.07.2010, 15:45
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
FREEZE_ball, при этом рект из массива надеюсь не удалится?
Старый 28.07.2010, 15:50
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
AlexKARASb, а, о, точно, не нужно. Но переменную r обнулить надо будет.
Старый 28.07.2010, 15:53
ScorpioT1000
Работаем
offline
Опыт: отключен
сколько раз воздается рект, столько и удаляться должен, кроме глобалок
Старый 28.07.2010, 17:51
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
» code
globals
rect array SqRect [410]
endglobals

создание ректов    
TimerStart(t2,0.01,false,lambda void() {
        int i = 1
        int h = 1
        int c = 0
        real x = GetRectMinX(bj_mapInitialPlayableArea) - 64
        real y = GetRectMinY(bj_mapInitialPlayableArea) - 64
        real xt = x
        real yt = y
        loop
        exitwhen h>20
        i=1
            loop
            exitwhen i>20
                xt=x+128*i
                yt=y+128*h
                if CheckPoints(xt,yt) then
                SqRect[c]=Rect(xt-64.00,yt-64.00,xt+64.00,yt+64.00)
                endif
            c++
            i++
            endloop
        h=h+1
        endloop
        DestroyTimer(GetExpiredTimer())
        })
использование в коде выше постом через Return_Rect
кроме глобалок
у меня глобальные и локальные типа: rect r = Return_Rect(x,y)
так значит просто обнулить, ясно, спасибо
Старый 28.07.2010, 17:55
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 06:11.