![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2010
Сообщений: 3
|
Привет. написал такой код. при наведении курсора клип плавно масштабируется. но только один раз. когда навожу второй раз клип масштабируется резко и не полностью.
даю сам код. посмотрите.(только не строго судите - я два дня как AS3 програмист). var xMax:Number = 100; var xMin:Number = 50; /////////////////////////////////////////////////// clp.addEventListener(MouseEvent.MOUSE_OVER, zoomIN); function zoomIN(e:MouseEvent):void{ addEventListener(Event.ENTER_FRAME, prr); function prr(e:Event):void{ for (var i:Number=clp.width; i<xMax; i++){ clp.width +=.2; clp.height +=.2; } } } //////////////////////////////////////////////////// clp.addEventListener(MouseEvent.MOUSE_OUT, zoomOUT); function zoomOUT(e:MouseEvent):void{ addEventListener(Event.ENTER_FRAME, prr); function prr(e:Event):void{ for (var i:Number=clp.width; i>xMin; i--){ clp.width -=.2; clp.height -=.2; } } } |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
делайте removeEventListener в функции prr()
|
|
|||||
|
Регистрация: Feb 2010
Сообщений: 3
|
добавляю вот эту строчку
не работает. вставлял повсюду(в цикл, за циклом)...
|
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
на всякий случай. в обе функции вставляете эту строчку?
Думаю с циклами вы намудрили. Читаемость хромает, отсюда и ошибка вылезла скорей всего. Так с ходу не пойму. var xMax:Number = 50; /////////////////////////////////////////////////// clp.addEventListener(MouseEvent.MOUSE_OVER, zoomIN); function zoomIN(e:MouseEvent):void{ addEventListener(Event.ENTER_FRAME, prr); function prr(e:Event):void{ for (var i:Number=0; i<xMax; i++){ clp.width +=.2; clp.height +=.2; } } } //////////////////////////////////////////////////// clp.addEventListener(MouseEvent.MOUSE_OUT, zoomOUT); function zoomOUT(e:MouseEvent):void{ addEventListener(Event.ENTER_FRAME, prr); function prr(e:Event):void{ for (var i:Number=0; i<xMax; i++){ clp.width -=.2; clp.height -=.2; } } } И в цикле счетчиком лучше int делать или uint. |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 3
|
ок. спасибо.
|
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
блин, ненавижу кложуры..
нельзя было сделать вместо двух вложенных prr - два нормальных метода? zoomInEnterFrameHandler и zoomOutEnterFrameHandler ? или слишком много букоф печатать надо? а ремувлистенер не работает потому что после выхода из ф-ции zoomOUT или zoomIN нет никакого prr - это локальная ф-ция. И вообще: код в кадрах писать на надо.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 27.02.2010 в 11:12. |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Котяра, так я же предлагал в обе функции prr вставить удаление листнера. так же нормлально?
|
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
zoomClip.zip
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; /** * ... * @author k0t0vich */ public class ZoomedClip extends Sprite { private var xMax:int = 100; private var xMin:int = 50; private var zoomSpeed:Number = 2; public function ZoomedClip() { super(); addEventListener(MouseEvent.MOUSE_OUT, zoomOUT); addEventListener(MouseEvent.MOUSE_OVER, zoomIN); } private function zoomIN(e:MouseEvent):void { stopZoom(); addEventListener(Event.ENTER_FRAME, drawZoomIN); } private function stopZoom():void { removeEventListener(Event.ENTER_FRAME, drawZoomIN); removeEventListener(Event.ENTER_FRAME, drawZoomOUT); } private function drawZoomIN(e:Event):void { if (width > xMin) { width -=zoomSpeed; height -= zoomSpeed; } else { stopZoom(); } } private function zoomOUT(e:MouseEvent):void { stopZoom(); addEventListener(Event.ENTER_FRAME, drawZoomOUT); } private function drawZoomOUT(e:Event):void { if (width < xMax) { width +=zoomSpeed; height += zoomSpeed; } else { stopZoom(); } } } }
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 27.02.2010 в 12:18. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|