Показать сообщение отдельно
Старый 03.04.2006, 12:57
olegn вне форума Посмотреть профиль Отправить личное сообщение для olegn Найти все сообщения от olegn
  № 7  
Ответить с цитированием
olegn
 
Аватар для olegn

Регистрация: Jan 2006
Адрес: El Paso
Сообщений: 201
По умолчанию Пользовательский метод tweenTo

Во многих книжках приводится вот такой пример расширения класса MovieClip методом tweenTo
Код:
//MOVIECLIP CLASS EXTENSION
//$FPS - framerate in your film
MovieClip.prototype.tweenTo = function(targetsObj, time, callbackObj, callbackFunc, callbackArgs) {
	var noo;
	if (this.tweenControl) {
		noo = this.tweenControl;
	} else {
		noo = this.createEmptyMovieClip("tweenControl", ++this.depth);
	}
	noo.targetsObj = targetsObj;
	noo.callbackObj = callbackObj;
	noo.callbackFunc = callbackFunc;
	noo.callbackArgs = callbackArgs;
	noo.timespeed = time;
	noo.frameNum = 0;
	noo.frames = noo.timespeed*$FPS;
	noo.step_arr = new Array();
	var i = 0;
	for (var prop in noo.targetsObj) {
		noo.step_arr[i] = (noo._parent[prop]<=noo.targetsObj[prop] ? 1 : -1)*Math.abs((noo.targetsObj[prop]-noo._parent[prop])/noo.frames);
		i++;
	}
	noo.onEnterFrame = function() {
		this.frameNum++;
		i = 0;
		for (var prop in this.targetsObj) {
			this._parent[prop] += this.step_arr[i];
			i++;
		}
		if (this.frameNum == this.frames) {
			this.callbackObj[this.callbackFunc](this.callbackArgs);
			this.removeMovieClip();
		}
	};
};
Я использовал его при AS 1.0 активно, вполне удобное решение. Разберись в нем, тогда ты сможешь применять к одному объекту команду для изменения его сразу нескольких свойств. Как минимум, вместо четырех строчек кода у тебя будет не более двух.
Пример использования в коде:
Код:
myclip.tweenTo({_xscale:50,_yscale:150,_x:200,_y:2},3);
На самом деле существующий в AS 2.0 класс Tween вырос тоже примерно отсюда.
__________________
No war, make Flash.