Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Странный глюк Tween... (http://www.flasher.ru/forum/showthread.php?t=150045)

vave 05.02.2011 13:14

Странный глюк Tween...
 
Сделал код Для аттача из библиотеки рандомных символов и динамически запускаю твины для каждого циклом по его окончании... жуть :)
суть в том что если аттачить 1 символ твин выполняется для его одного 20 раз...
если аттачить 20 символов твин выполняется по 1му разу для каждого и в сумме все равно 20 раз...
потом все твины останавливаются :(

Код AS3:

import fl.transitions.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.events.*;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;
 
 
var MinW:int = parent.width - 100;
var MinH:int = parent.height - 100;
 
 
 
for (var j=1; j<10; j++)
{
        var newRandBox = Math.round(Math.random() * 4) + 1;
        var GenerName:String = "ColorBox" + newRandBox;
        var NewDefMC:MovieClip = new (getDefinitionByName(GenerName) as Class)() as MovieClip;
        this.addChild(NewDefMC);
 
        var TempNameObj = NewDefMC;
        var Sx = Math.random() * MinW;
        var Sy = Math.random() * MinH;
        var Ss = (Math.round(Math.random() * 10) / 10)+0.4;
        var Sa = (Math.round(Math.random() * 10) / 10)+0.1;
        StartMoveBox(TempNameObj,Sx,Sy,Ss,Sa);
}
function StartMoveBox(BoX, Sx,Sy,Ss,Sa)
{
 
        var NewTWx:Tween;
        var NewTWy:Tween;
        var NewTWscaley:Tween;
        var NewTWscalex:Tween;
        var NewTWa:Tween;
        var NewDuration = (Math.round((Math.random()+0.1)*10)/10)*10;
        var Ex = Math.random() * MinW;
        var Ey = Math.random() * MinH;
        var Es = (Math.round(Math.random() * 10) / 10)+0.4;
        var Ea = (Math.round(Math.random() * 10) / 10)+0.1;
 
 
        NewTWy = new Tween(BoX,"x",Back.easeOut,Sx,Ex,NewDuration,true);
        NewTWx = new Tween(BoX,"y",Back.easeOut,Sy,Ey,NewDuration,true);
        NewTWscalex = new Tween(BoX,"scaleX",Back.easeOut,Ss,Es,NewDuration,true);
        NewTWscaley = new Tween(BoX,"scaleY",Back.easeOut,Ss,Es,NewDuration,true);
        NewTWa = new Tween(BoX,"alpha",Back.easeOut,Sa,Ea,NewDuration,true);
 
        NewTWa.addEventListener(TweenEvent.MOTION_FINISH, funishTween);
 
        function funishTween(e:TweenEvent)
        {
                trace("end Starter");
                StartMoveBox(BoX, Ex, Ey,Es,Ea);
        }
 
}


undefined 05.02.2011 13:19

вы все твины храните в локальных переменных, вот после цикла сборщик мусора их и киляет, попробуйте хранить их в переменных класса.

Bgg 05.02.2011 13:20

Попробуйте воспользоватся альтернативным твинером: https://www.greensock.com/

vave 05.02.2011 13:22

мне критично именно стандартным... и потом я программер не очень... :)

mikhailk 05.02.2011 14:22

Использование TweenLite от указанного выше http://www.greensock.com/ проще и надежнее.

Кроме того, Вы запускаете ПЯТЬ твинов для одного объекта (на самом деле, это неправильное решение), а при использовании TweenLite нужно запустить всего один твин, который поменяет все пять параметров у таргетного объекта.

Вот ссылка с примером кода: http://www.greensock.com/tweenlite/

vave 05.02.2011 14:49

а как его установить в мой файл?

RandomUser 05.02.2011 15:10

Скопировать в корень проекта папку com из скаченного архива и

Код AS3:

// simple example
import com.greensock.TweenLite;
import com.greensock.easing.Back;
 
TweenLite.to(mc, 1.0, {x:100, y:150, scaleX: 2, scaleY: 2, alpha: 0.5, ease: Back.easeOut});


vave 05.02.2011 16:09

cпс!

кому интересно решил проблему запихав код с твином в сам символ который аттачил(в библиотеке) и все заработало вне зависимости от количества инстансов!

Bgg 05.02.2011 16:24

эх, учили-учили, хотели как лучше, а получилось...

vave 05.02.2011 16:44

я обязательно разберусь с предложены вами твином, мне просто срочно надо :) нет времени :)


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

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