Показать сообщение отдельно
Старый 23.02.2009, 22:53
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 9  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
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;
	}
}
Делается массив из объектов и к этим объекта привязываются твины, теперь работу твина нарушать нечему и он всегда выполниться дойдет и все такое.