![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Apr 2013
Сообщений: 44
|
Опять проблема с IF! Сначала Код
import flash.events.Event; var dragg:Boolean = false; star.addEventListener(MouseEvent.MOUSE_DOWN,stardrag); star.addEventListener(MouseEvent.MOUSE_UP,stodrag); function stodrag(e:MouseEvent):void { stopDrag(); if (dragg==false) {trace("fdfff"); star.addEventListener(Event.ENTER_FRAME,onFT); function onFT(e:Event):void { star.x += 10; /*if (star.x == 200) { star.removeEventListener(Event.ENTER_FRAME,onFT); }*/ } } } function stardrag(e:MouseEvent):void { star.startDrag(); dragg = true; } Без нее ничего не работает!! |
|
|||||
|
какие образом он ее не проверяет?
метод stopdrag вызывается? чему равен dragg до блока if? пс - для булевых переменных не надо писать == true\false достаточно (dragg) или (!dragg) - не надо использовать локальные методы для подписки на какие-либо события(лучше их вообще не использовать) - именование переменных должно отражать смысл использования или содержание, например isDrag
__________________
местонахождение |
|
|||||
|
Регистрация: Oct 2005
Сообщений: 217
|
когда вы нажали на мовиклип вы задали dragg = true; а в условии if заданно , если dragg равно false , только в этом случае условное выражение может вернуть значение true и выполнить код, еще приемник события стоит onFT вынести за пределы функции.
|
|
|||||
|
Регистрация: Jun 2013
Сообщений: 133
|
Как раз он её и проверяет, но не проходит дальше т.к. методе stardrag вы присвоили переменной dragg значение true.
|
|
|||||
|
Регистрация: Apr 2013
Сообщений: 44
|
import flash.events.Event; var isDrag:Boolean = false; star.addEventListener(MouseEvent.MOUSE_DOWN,stardrag); star.addEventListener(MouseEvent.MOUSE_UP,stodrag); function stodrag(e:MouseEvent):void { isDrag = false; stopDrag(); if (!dragg) {trace("fdfff"); star.addEventListener(Event.ENTER_FRAME,onFT); function onFT(e:Event):void { e.currentTarget.x -= 2; e.currentTarget.y -= 2; if (e.currentTarget.x == 67.95 && e.currentTarget.y == 48) { star.removeEventListener(Event.ENTER_FRAME,onFT); } } } } function stardrag(e:MouseEvent):void { star.startDrag(); isDrag = true; } Почему заработало только после добавления isDrag в функцию? Я же определил ее до этого как false . - не надо использовать локальные методы для подписки на какие-либо события(лучше их вообще не использовать) - немного непонял... |
|
|||||
|
Регистрация: Jun 2013
Сообщений: 133
|
Не останавливается, потому что не выполняется условие e.currentTarget.x == 67.95 && e.currentTarget.y == 48.
Заработало потому что isDrag = false у вас стало только когда вы отпустили кнопку мышки. |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 44
|
- не надо использовать локальные методы для подписки на какие-либо события(лучше их вообще не использовать) можно ли это разъяснить?
|
|
|||||
|
Регистрация: Jun 2013
Сообщений: 133
|
Что именно, что такое локальные методы или почему их лучше не использовать?
|
|
|||||
|
Регистрация: Oct 2005
Сообщений: 217
|
Честно говоря не понятно зачем Вам все эти манипуляции с isDrag .Изначально вы задаете значение false, при
нажатии задаете true , потом когда отпустили кнопку опять задали false и в условном операторе опять поменяли значение на true. import flash.events.Event; var isDrag:Boolean = false; star.addEventListener(MouseEvent.MOUSE_DOWN,stardrag); star.addEventListener(MouseEvent.MOUSE_UP,stodrag); function stodrag(e:MouseEvent):void { stopDrag(); if (isDrag) { trace("fdfff"); star.addEventListener(Event.ENTER_FRAME,onFT); isDrag = false; } } function onFT(e:Event):void { e.currentTarget.x -= 2; e.currentTarget.y -= 2; if (e.currentTarget.x <= 67.95 && e.currentTarget.y <= 48) { star.removeEventListener(Event.ENTER_FRAME,onFT); } } function stardrag(e:MouseEvent):void { star.startDrag(); isDrag = true; } |
|
|||||
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|