Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   не ловится TweenEvent.MOTION_FINISH (http://www.flasher.ru/forum/showthread.php?t=119411)

ptirA 19.12.2008 20:20

не ловится TweenEvent.MOTION_FINISH
 
Привет Всем!

Некий объект по клику зумится, по второму клику едет обратно, нужно сделать так, что-бы пока mapScaleIn() работает mapScaleOut() вызвать было нельзя.

В чем неправ?

Код AS3:

import fl.transitions.TweenEvent;
import fl.transitions.Tween;
import fl.transitions.easing.*;
 
var zoomAvailable:Boolean = true;
 
function unlockTween(event:TweenEvent):void
{
        zoomAvailable = true;
}
 
function mapScaleIn()
{
        if (!zoomAvailable)
        {
            return;
        }
    zoomAvailable = false;
        myTween_scaleX = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleX, mainScaleXin, 1, true);
        myTween_scaleY = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleY, mainScaleYin, 1, true);
    myTween_scaleX.addEventListener(TweenEvent.MOTION_FINISH, unlockTween);
}
 
function mapScaleOut()
{
        if (!zoomAvailable)
        {
                  return;
        }
    zoomAvailable = false;
        myTween_scaleX2 = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleXin, mainScaleX, 1, true);
        myTween_scaleY2 = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleYin, mainScaleY, 1, true);
    myTween_scaleX2.addEventListener(TweenEvent.MOTION_FINISH, unlockTween);
}
 
 
function setPosition()
{
        if (selectedUnit == 1)
        {
                myTween1_desc = new Tween(nADesc_mc, "x", Regular.easeIn, nADescX , nADescXin, 1, true);
                myTween2_desc = new Tween(nADesc_mc, "alpha", Regular.easeIn, 0, 1, 1, true);
 
                myTween1 = new Tween(main_mc, "x", Regular.easeIn, mainX , NAcenterX, 1, true);
                myTween2 = new Tween(main_mc, "y", Regular.easeIn, mainY , NAcenterY, 1, true);                               
 
        }       
        else
        {
                myTween3_desc = new Tween(europeDesc_mc, "x", Regular.easeIn, europeDescX , europeDescXin, 1, true);
                myTween4_desc = new Tween(europeDesc_mc, "alpha", Regular.easeIn, 0, 1, 1, true);
 
                myTween3 = new Tween(main_mc, "x", Regular.easeIn, mainX , EURcenterX, 1, true);
                myTween4 = new Tween(main_mc, "y", Regular.easeIn, mainY , EURcenterY, 1, true);
        }
        mapScaleIn();
        invisBtn_mc.visible = true;
}


silin 19.12.2008 21:09

да ловится событие MOTION_FINISH, дело видимо в чем-то еще..
приведенный обрывок абсолютно ни о чем не говорит
если есть косяк, то не поленись дать его пример, который можно взять и потестить, не домысливая логику и не достраивая недостающее..
к слову, о логике: у Твина есть свойство isPlaying, можно по-простому его смотреть, чтобы определить можно ли запускать другой твин..

ptirA 19.12.2008 22:12

Вложений: 2
Да я уже выкладывал исходник.... вот он (они)

http://www.flasher.ru/forum/showthread.php?t=119277

silin 19.12.2008 23:15

исходники, да еще в таком количестве здесь не причем..
не думаю, что найдется много охотников поискать баги в чужом проекте
выдели трабл ("не ловится TweenEvent.MOTION_FINISH", например) в отдельный пример и приведи..

зы:нужно сделать так, что-бы пока mapScaleIn() работает mapScaleOut() вызвать было нельзя.
Код AS3:

import fl.transitions.Tween;
 
var mc:MovieClip= new MovieClip();
var tX:Tween;
var tY:Tween;
 
mc.graphics.beginFill(0x808080);
mc.graphics.drawRect(0, 0, 60, 40);
mc.addEventListener(MouseEvent.CLICK, eMcClick);
mc.x=50;
mc.y=50;
addChild(mc);
function scaleIn():void {
        tX=new Tween(mc,"scaleX",null,1,0.5,20);
        tY=new Tween(mc,"scaleY",null,1,0.5,20);
}
function scaleOut():void {
        tX=new Tween(mc,"scaleX",null,0.5,1,20);
        tY=new Tween(mc,"scaleY",null,0.5,1,20);
}
function eMcClick(e:MouseEvent):void {
        if (tX && tX.isPlaying) return;
 
        if (mc.scaleX<1) {
                scaleOut();
        } else {
                scaleIn();
        }
}


ptirA 20.12.2008 22:33

Большое спасибо.

Psycho Tiger 21.12.2008 10:10

Немного не по теме, но все же...
TweenLight работает примерно в 200 (если не ошибаюсь) раз быстрее, гораздо удобнее и проще.

ptirA 22.12.2008 19:30

Пока нахожусь на стадии, когда самому интересно разобраться. Когда вопросов не останется с удовольствием буду пользовать TweenLite, gTween и tweenMAX :-)


Часовой пояс GMT +4, время: 16:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.