Форум 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)
-   -   нужно ли каждый раз вызывать OnEnterFrame (http://www.flasher.ru/forum/showthread.php?t=68828)

Smirnoff 06.09.2005 14:45

очень простой скрипт, но уже голову сломал.
 
Проблема такая:
Нужно, чтобы сначала прозрачность одного объекта уменьшилась, когда она становится равна 5 должна увеличиться прозрачность 2-го объекта, а когда она доходит до 95 должен начать двигаться 3-й.
Скритп такой:
=============================
ob_1.alpha=100
ob_2.alpha=0
ob_3._x=600

OnEnterFrame=function (){
ob_1.alpha-=1
}

if (ob_1.alpha=5){
OnEnterFrame=function (){
ob_2.alpha+=1
}
}

if (ob_2.alpha=95){
OnEnterFrame=function (){
ob_3._x-=1
}
}
==========================
Проблема в том, что при добавлении условий ролик воспроизводится
каждый раз быстрее.
Может проблема в вызове каждый раз OnEnterFrame ?
Подскажите пожалуйста ...
Просто до этого скрипт был расписан в одном длинющем условии (там еще штук 10 потом добавляется), потом я решил его раскидать ..
Вот теперь окончательно запутался ..

Leezard 06.09.2005 16:01

На объект 1 вешаем:
this.onEnterFrame=function (){
this.alpha-=1;
if (this.alpha=5){
_root.ob_2.onEnterFrame=function (){
alpha+=1;
if (this.alpha=95){
_root.ob_3.onEnterFrame=function (){
this._x-=1;
}
delete this.onEnterFrame();
}
delete this.onEnterFrame();
}

Не уверен в синтаксисе, но принципиально работать будет.

Dimchansky 06.09.2005 16:03

ob_1._alpha=100
ob_2._alpha=0
ob_3._x=600

ob_1.onEnterFrame=function (){
(this._alpha <= 5) ? this._alpha-- : ob_2.alpha++;
(ob_2._alpha >= 95) ? ob_3._x-- : ob_2._alpha--;
}

вроде так

Leezard 06.09.2005 16:08

Ух ты а что это за запись, объясни пожалуйста
(this._alpha <= 5) ? this._alpha-- : ob_2.alpha++;

Dimchansky 06.09.2005 16:09

Leezard, Smirnoff

не забудьте, что операция сравнения - это ==, а не =

Dimchansky 06.09.2005 16:10

Leezard тернарная операция (условие) ? действие_1 : действие_2

если условие истинно, то выполняется действие_1 иначе действие_2

Dimchansky 06.09.2005 16:20

сейчас только проверил :)

ob_1._alpha=100;
ob_2._alpha=0;
ob_3._x=10;

ob_1.onEnterFrame=function (){
(this._alpha >= 5) ? this._alpha-- : ob_2._alpha++;
(ob_2._alpha >= 95) ? ob_3._x-- : ob_2._alpha=ob_2._alpha;
}

Жень Шень 06.09.2005 16:29

Вложений: 1
ой! и я свои 2954 байт вставлю!!!

Leezard 06.09.2005 16:37

работает, выглядит компактно. ляпота.

Smirnoff 06.09.2005 16:43

всем спасибо, кажется все понял ..
но назрел еще вопрос, выношу в новую тему ..


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

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