Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как упростить (http://www.flasher.ru/forum/showthread.php?t=77825)

art85 02.04.2006 21:59

как упростить
 
Люди как упростить этот код:
on (rollOver) {
_root.light.swapDepths(40);
startDrag(_root.light, true);
//объект воздействия d3
this.swapDepths(100);
new mx.transitions.Tween(this, "_xscale", null, this._xscale, 150, 5);
new mx.transitions.Tween(this, "_yscale", null, this._yscale, 150, 5);
//объект d1
this._parent.d1.swapDepths(96);
new mx.transitions.Tween(this._parent.d1, "_xscale", null, this._parent.d1._xscale, 120, 5);
new mx.transitions.Tween(this._parent.d1, "_yscale", null, this._parent.d1._yscale, 120, 5);
new mx.transitions.Tween(this._parent.d1, "_x", null, this._parent.d1._x, this._parent.d1._x += 1, 5);
new mx.transitions.Tween(this._parent.d1, "_y", null, this._parent.d1._y, this._parent.d1._y, 5);
//объект d2
this._parent.d2.swapDepths(98);
new mx.transitions.Tween(this._parent.d2, "_xscale", null, this._parent.d2._xscale, 130, 5);
new mx.transitions.Tween(this._parent.d2, "_yscale", null, this._parent.d2._yscale, 130, 5);
new mx.transitions.Tween(this._parent.d2, "_x", null, this._parent.d2._x, this._parent.d2._x += 1, 5);
new mx.transitions.Tween(this._parent.d2, "_y", null, this._parent.d2._y, this._parent.d2._y, 5);
//объект this._parent.d4
this._parent.d4.swapDepths(98);
new mx.transitions.Tween(this._parent.d4, "_xscale", null, this._parent.d4._xscale, 130, 5);
new mx.transitions.Tween(this._parent.d4, "_yscale", null, this._parent.d4._yscale, 130, 5);
new mx.transitions.Tween(this._parent.d4, "_x", null, this._parent.d4._x, this._parent.d4._x += 1, 5);
new mx.transitions.Tween(this._parent.d4, "_y", null, this._parent.d4._y, this._parent.d4._y, 5);
//объект d5
this._parent.d5.swapDepths(96);
new mx.transitions.Tween(this._parent.d5, "_xscale", null, this._parent.d5._xscale, 120, 5);
new mx.transitions.Tween(this._parent.d5, "_yscale", null, this._parent.d5._yscale, 120, 5);
new mx.transitions.Tween(this._parent.d5, "_x", null, this._parent.d5._x, this._parent.d5._x += 1, 5);
new mx.transitions.Tween(this._parent.d5, "_y", null, this._parent.d5._y, this._parent.d5._y, 5);
//объект d6
this._parent.d6.swapDepths(94);
new mx.transitions.Tween(this._parent.d6, "_xscale", null, this._parent.d6._xscale, 110, 5);
new mx.transitions.Tween(this._parent.d6, "_yscale", null, this._parent.d6._yscale, 110, 5);
new mx.transitions.Tween(this._parent.d6, "_x", null, this._parent.d6._x, this._parent.d6._x += 1, 5);
new mx.transitions.Tween(this._parent.d6, "_y", null, this._parent.d6._y, this._parent.d6._y, 5);
//объект c1
this._parent.c1.swapDepths(90);
new mx.transitions.Tween(this._parent.c1, "_xscale", null, }
on (rollOut) {
//объект воздействия d3
new mx.transitions.Tween(this, "_xscale", null, this._xscale, 100, 5);
new mx.transitions.Tween(this, "_yscale", null, this._yscale, 100, 5);
//свойства transition'а для объекта d1
new mx.transitions.Tween(this._parent.d1, "_xscale", null, this._parent.d1._xscale, 100, 5);
new mx.transitions.Tween(this._parent.d1, "_yscale", null, this._parent.d1._yscale, 100, 5);
new mx.transitions.Tween(this._parent.d1, "_x", null, this._parent.d1._x, this._parent.d1._x -= 1, 5);
new mx.transitions.Tween(this._parent.d1, "_y", null, this._parent.d1._y, this._parent.d1, 5);
//свойства transition'а для объекта d2
new mx.transitions.Tween(this._parent.d2, "_xscale", null, this._parent.d2._xscale, 100, 5);
new mx.transitions.Tween(this._parent.d2, "_yscale", null, this._parent.d2._yscale, 100, 5);
new mx.transitions.Tween(this._parent.d2, "_x", null, this._parent.d2._x, this._parent.d2._x -= 1, 5);
new mx.transitions.Tween(this._parent.d2, "_y", null, this._parent.d2._y, this._parent.d2, 5);
//свойства transition'а для объекта this._parent.d4
new mx.transitions.Tween(this._parent.d4, "_xscale", null, this._parent.d4._xscale, 100, 5);
new mx.transitions.Tween(this._parent.d4, "_yscale", null, this._parent.d4._yscale, 100, 5);
new mx.transitions.Tween(this._parent.d4, "_x", null, this._parent.d4._x, this._parent.d4._x -= 1, 5);
new mx.transitions.Tween(this._parent.d4, "_y", null, this._parent.d4._y, this._parent.d4, 5);
//свойства transition'а для объекта d5
new mx.transitions.Tween(this._parent.d5, "_xscale", null, this._parent.d5._xscale, 100, 5);
new mx.transitions.Tween(this._parent.d5, "_yscale", null, this._parent.d5._yscale, 100, 5);
new mx.transitions.Tween(this._parent.d5, "_x", null, this._parent.d5._x, this._parent.d5._x -= 1, 5);
new mx.transitions.Tween(this._parent.d5, "_y", null, this._parent.d5._y, this._parent.d5, 5);
//свойства transition'а для объекта d6
new mx.transitions.Tween(this._parent.d6, "_xscale", null, this._parent.d6._xscale, 100, 5);
new mx.transitions.Tween(this._parent.d6, "_yscale", null, this._parent.d6._yscale, 100, 5);
new mx.transitions.Tween(this._parent.d6, "_x", null, this._parent.d6._x, this._parent.d6._x -= 1, 5);
new mx.transitions.Tween(this._parent.d6, "_y", null, this._parent.d6._y, this._parent.d6, 5);
//свойства transition'а для объекта c1
new mx.transitions.Tween(this._parent.c1, "_xscale", null, this._parent.c6._y, this._parent.c6, 5);
}
Это естевственно только часть. Дело в том что он весит не много 54 кило, но вот при проигывании начинает зависать. Может есть проги для оптимизации кода. Спасибо

sergwizard 02.04.2006 22:18

А что ты, вообще, хочешь сделать? Для чего этот код? Может быть, лучше выложить исходник и сформулировать задачу?

art85 02.04.2006 22:57

подробнее
 
В принципе это и есть часть исходника. Извините весь код здесь выложить нельзя в связи с лимитами на кол-во символов, да и не нужно по-моему. А сделать я хочу следующее: при нажатии на один мувик остальные увеличивются "на спад". Например первый имеет размер 150%, второй 140%, третий 130% и т.д.Главный в середине а те которые подвергаются изменению вместе с ним находятся вокруг него. Главный мувик соответсвенно самый крупный остальные меньше

Homo Sapiens 03.04.2006 01:57

Ну так сделай программно. Зачем тебе tween? У тебя же все клипы в массиве (ведь верно?). Пробегайся по массиву и изменяй...

motor4ik 03.04.2006 11:12

во-первых используй code
во-вторых это полная жесть :-)
вот чем отличается программист от аниматора :-)

art85 03.04.2006 12:02

а как без tween'а сделать замедление анимации. И потом думаешь код будет легче если я буду менять св-ва мувиков в массиве. Там почти нет одинаково анимируемых мувиков. Каждый смещается немного по другому. И что значит программно, анимация и так сейчас программная не ключевыми же кадрами я это сделал. Вообще если кто то понял задачу если не сложно может бросите кусок кода как вы это видите. Спасибо

olegn 03.04.2006 12:57

Пользовательский метод 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 вырос тоже примерно отсюда.


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

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