PDA

Просмотр полной версии : Выползающая Кнопка - Клип, Как Прописать, Чтобы Заползала Обратно без ручной анимации


Дож
05.09.2007, 12:25
Здравствуйте!
Я - новичок и пытаюсь сделать кнопку которая выезжает и заезжает обратно без использования "ручной" анимации и без использования onEnterFrame на главной _root с целью возможности задействования на одной сцене одновременно 3 х или более таких кнопок, но вот не хватает мысли как сделать, чтобы кнопка заезжала обратно после события -onRollOut. Вот исходник, но замечу, что в кадрах _up и _over прямоугольники разные (в дальнейшем вместо прямоугольников будут две картинки). Т.е наводишь на картинку она становится другой и выезжает, убираешь мышь - картинка убирается назад и достигая исходного положения снова становится какой была. Вот убирания назад у меня не выходит и если не лень, то пожалуйста посмотрите исходник.
Может я вообще не то делаю. Код не даю т.к. в разных root прописан!
Спасибо!

Мыкыта
05.09.2007, 14:09
дык у вас уже ручная анимация посему непонятно что хочется если програмно делать то никакаих кадров и с помощю класса tween, а если ручками то лепите анимацию с ключевыми кадрами...

Дож
05.09.2007, 14:20
с помощю класса tween

Спасибо! Начинаю рыть...

Double
05.09.2007, 17:12
а чем onEnterFrame не угодил? твин и проц нагрузит сильнее, и swf будет весить больше...

Wolsh
05.09.2007, 17:42
Да там руками пять минут работы. В десять раз проще чем эти коды, засунутые в третий по вложенности мувик... Только путаться с таким кодом, в чем его смысл? Чтоб квадратик ползал? По-моему совершенно неоправдано.

etc
05.09.2007, 17:47
а чем onEnterFrame не угодил? твин и проц нагрузит сильнее, и swf будет весить больше...
А чем твин, работающий от onEnterFrame, нагрузит больше?

Golovach
05.09.2007, 18:02
onClipEvent (enterFrame) {
if (_x < _root.targetX){
_x=_x+1;
}
}


где targetX - желаемая координата нахождения вашего клипа

Дож
05.09.2007, 19:04
чем onEnterFrame не угодил
Он мне угодил всем, но в данном случае, я хотел лишь избежать использования его (onEnterFrame) на главной линейке, т.к. разместив например 4 таких кнопки всякий раз когда убираем мышь с одной на другую button onEnterFrame получает новое значение и соответственно первая не задвинувшись зависает а вторая выезжает. Не знаю понятно ли объяснил, ну а как новичок естественно столкнулся с элементарными (для профи) проблемами. Поэтому и спрашиваю, может вообще не то делаю... :)

onClipEvent (enterFrame) {
if (_x < _root.targetX){
_x=_x+1;
}
}
Это как я понимаю к самой кнопке прикрепляется, так?

Руками, это - MotionTween?

Wolsh
05.09.2007, 19:48
Ну да. MotionTween, Великий и Ужасный :)

Дож
05.09.2007, 20:04
Спасибо!!! Как я понял, для таких целей опытные люди код не используют?
Ведь здесь мне и посоветовали использовать в каждой кнопке(мувике) свой собственный root, чтобы кнопки на сцене не перехватывали друг у друга это несчастное событие. Казалось проще нет... Но отследить onRollOut не удаётся :( (мне по крайней мере)

Golovach
05.09.2007, 23:40
Не мудрите. Всегда стремитесь упростить работу.
Какой рут в каждой кнопке? Что это вообще?

Wolsh
06.09.2007, 02:31
Присоединяюсь. Вы просто сильно замудрили элементарную вещь.
Лучше посидите с ручкой и листочком бумажки и подумайте о конструкции, чем пытаться заставить ее работать методом тыка, постоянно усложняя и навешивая новые условия.

Double
06.09.2007, 09:38
Дож:
myButton0.onEnterFrame = someFunction;
myButton1.onEnterFrame = anotherFunction;
__etc:
//import mx.transitions.Tween;

for (i=0; i<300; i++) {
this.attachMovie("mc", "mc"+i, i, {_y: i});
/* this["myTween"+i] = new Tween(this["mc"+i], "_x", mx.transitions.easing.None.easeNone,0, Stage.width, 50, false);

this["myTween"+i].onMotionFinished = function() {
this.start();
}*/
this["mc"+i].onEnterFrame = function() {
this._x += Stage.width/50;
if (this._x > Stage.width) this._x = 0;
}
}

this.createTextField("tf", 300, 0, 350, 300, 50);
this.onEnterFrame = function() {
this.ct = getTimer();
tf.text = 1000/(this.ct - this.pt);
this.pt = this.ct;
}
подразумевается, что mc какой-нить с альфами. сам посмотри на фпс (можно среднюю прикинуть, лень писать. там и так всё видно прекрасно). и это простейший твин.

Дож
06.09.2007, 10:36
Огромное спасибо всем за ответы и мнения!
Double
Спасибо!..

etc
06.09.2007, 11:32
Double, сомневаюсь в правильности подобного теста, честно говоря.
С onEnterFrame, во-первых, особо не разгуляешься в формулах, да и неудобно. Хотя я допускаю, что стандартный твин медленнее в силу чрезвычайной собственной кривости. С нормально написанным врядли будут глюки.
Тесты ставить проблематично (код не наглядный, нужно собирать fla, делать клипы, прописывать linkage и т.п., что лень).

Double
06.09.2007, 11:55
__etc, согласен с тобой. на объективность не претендую. будем считать это моим предвзятым субъективным мнением) просто сколько не пытался сравнивать, самому руками написать эффективнее.