![]() |
|
||||||||||
|
|||||
|
Подскажите почему у меня класс Tween, когда быстро водишь мышкой недоконца выполняет заданную анимацию?
исходник в приложении.. |
|
|||||
|
Потому что класс Tween нормально не работает. Используйте пользовательские библиотеки, например GTween.
__________________
Jedem das Seine |
|
|||||
|
а неподскажите где их достать?
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
SarGun, вы присваиваете твин локальным переменным, которые удаляются после выполнения функции.
|
|
|||||
|
Цитата:
Он начинает глючить когда их работает несколько. Сбивается, когда движущийся объект принимает события (мышиные, например).
__________________
Jedem das Seine |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
TweenLite -> google.com
|
|
|||||
|
Tween мега стабильный и самый быстрый. Юзаю flex и компилю в нем под 10, так подсунул ему библиотеку из flash cs3 и в этой ситуации tween не подводит.
По вашему коду, вы запускаете твины когда они еще не выполнились, в это же время создаете новые твины, которые должны разорвать объект в разные стороны, но твин добрый и он пытается что-то делать и флешка не вылетает. Вот рабочий код import fl.transitions.easing.*;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
var arr:Array = [];
var ob:Object;
var c:int = 0;
var eff:int = 300;
for (var i:int = 0; i<10; i++) {
for (var j:int = 0; j<10; j++) {
var cont:Sprite = new Sprite();
cont.x = (i+5) * (image.width/10);
cont.y = (j+5) * (image.width/10);
addChild(cont);
var myBitmapData:BitmapData = new BitmapData(image.width / 10,image.height / 10);
var rect:Rectangle = new Rectangle(0,0,image.width / 10,image.height / 10);
var matrix:Matrix = new Matrix();
matrix.tx = i * image.width / 10 * -1;
matrix.ty = j * image.width / 10 * -1;
myBitmapData.draw(image,matrix,null,null,rect,true);
var bitmap:Bitmap = new Bitmap(myBitmapData);
bitmap.x = bitmap.width / 2 * -1;
bitmap.y = bitmap.height / 2 * -1;
cont.addChild(bitmap);
cont.addEventListener(MouseEvent.MOUSE_OVER, over);
cont.addEventListener(MouseEvent.MOUSE_OUT, out);
cont.name = ""+c;
arr[c] = ob = new Object();
ob.sp = cont;
ob.i = 0;
ob.tw = new Tween(ob, "i", None.easeNone, 0, 200, 2, true);
ob.tw.addEventListener(TweenEvent.MOTION_CHANGE, twChange);
ob.tw.stop();
ob.done = false;
ob.id = c;
ob.x = cont.x;
ob.y = cont.y;
ob.finX = Math.random() * cont.x + cont.x / 2;
ob.finY = Math.random() * cont.y + cont.y / 2;
ob.indX = (ob.finX - ob.x)/100;
ob.indY = (ob.finY - ob.y)/100;
c++;
}
}
removeChild(image);
function over(event:MouseEvent) {
c = int(event.target.name);
ob = arr[c];
ob.tw.start();
ob.finX = ob.x + (eff/2 - Math.random() *eff);
ob.finY = ob.y + (eff/2 - Math.random() *eff);
ob.indX = (ob.finX - ob.x)/100;
ob.indY = (ob.finY - ob.y)/100;
addChild(ob.sp);
}
function out(event:MouseEvent) {
}
function twChange(evt:TweenEvent):void
{
ob = evt.target.obj;
if (ob.i<100){
ob.sp.x = ob.x + ob.i * ob.indX;
ob.sp.y = ob.y + ob.i * ob.indY;
}
else{
ob.sp.x = ob.x + (200 - ob.i) * ob.indX;
ob.sp.y = ob.y + (200 - ob.i) * ob.indY;
}
}
|
|
|||||
|
Регистрация: Oct 2008
Сообщений: 14
|
Сам сталкивался с этим...
создай массив и пихай туда все твины var _tweens:Array = new Array(); var new_tween:Tween = new Tween(...); _tweens.push(new_tween); ![]() переодически желательно очищать массив |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|