PDA

Просмотр полной версии : Почему неработает цикл


Биогумус
08.01.2003, 16:25
on(press) {

flag=100;
if (flag>0){
flag--;
_root.mainbg._alpha=flag
}
}


Непроисходит визуального fade in :(
нечего непроисходит

почему же почему ?

Max N Chubin_
08.01.2003, 16:34
:(
попробуй словами написать ниже что происходит у тебя?
ты нажал кнопку мыши иииии....
отнесись к этому серьезно!!! Тада поймешь!
ждем-с.

voro_bej
08.01.2003, 16:34
А где тут цикл? :)
Трейсь. Подсказывать не буду.

Биогумус
08.01.2003, 16:44
on(press) {


for(_root.mainbg._alpha=0; _root.mainbg._alpha>100; _root.mainbg._alpha--) {
_root.mainbg._alpha=_root.mainbg._alpha;
}

}

ну вот вам цикл
и тож неработает
сразу в 0 прозрасность кидает без визуального эффекта

что есть тресить ?

Max N Chubin_
08.01.2003, 16:47
циклы ты знаешь, вижу.
вернемся к событиям.
ты нажал кнопку мыши...
хорошо..
выполняется код см. первый пост.
что там происходит???

Биогумус
08.01.2003, 16:47
наверно я тупой человек

протресил вот:

98.828125
96.484375
94.140625
91.796875
89.453125
87.109375
84.765625
82.421875
80.078125
77.734375
75.390625
73.046875
70.703125
68.359375
66.015625
63.671875
61.328125
58.984375
56.640625
54.296875
51.953125
49.609375
47.265625
44.921875
42.578125
40.234375
37.890625
35.546875
33.203125
30.859375
28.515625
26.171875
23.828125
21.484375
19.140625
16.796875
14.453125
12.109375
9.765625
7.421875
5.078125
2.734375
0.390625


и че ? ;)

Биогумус
08.01.2003, 16:50
да в первом коде нефига похожего на цикл непроисходит
просто одна итерация срабатывает на инкотенацию и все



ABS()'ом резать надо остаток ?
только эффекта нету по любому

voro_bej
08.01.2003, 16:50
Ты прям сразу все хочешь!
А по немножечку? Уменьшай по-немножечку.

SPV
08.01.2003, 16:55
А где раскадровка? Такой цикл даже калькулятор выполнит за доли миллисекунд - ты успеешь это увидеть? :)

DMN
08.01.2003, 17:00
Цикл работает, и номально совершенно постепенно увеличивает прозрачность мува. Только вот мув отрисовывается не сразу по изменению какого-либо его свойства, а когда время придет следующий кадр отрисовывать... Вот весь цикл в пределах одного кадра и проскакивает... На крайний случай мув можно заставить отрисоваться пораньше при помози updateafterevent, но этот случай 0 не тот. Мув должен следить за собой и постепенно изменять свой опрзрачность в onEnterFrame, например, когда это нужно...

voro_bej
08.01.2003, 17:02
Ребята, ребята!
Дайте человеку самому докопаться до истины. Ему ж самому прятно будет!

Max N Chubin_
08.01.2003, 17:39
и тут набежали знатоки циклов и все пропало...

блин человек не понимает что если написать так:
on(press) {

flag=100;
if (flag>0){
flag--;
_root.mainbg._alpha=flag
}
}

то каждый раз при обработке события переменной вновь и вновь будет присваиваться значение "100"
тут надо с азов программирования начинать!
чтобы чел понял - объявляют переменные в одном месте, обрабатывают в другом!
а кроме того само наличие переменной просто излишне! со свойством можно работать напрямую!
Короче, учить надо сначала! :mad:

voro_bej
08.01.2003, 18:04
Попробует так, попробует сяк, да и придет к нужному ответу. Человек уже не знает что бы ему есчо придумать, чтобы цикл заработал вот и пытается впихнуть туда что попало. Наверное его глючит от этого уже. Ну да выспится и с утра...
ЭВРИКА!!!!!
Он откроет для себя как сделать цикл.


зы надо выспаться, особенно если вчера хорошенько погулял.

DMN
09.01.2003, 03:32
Ну... Вот так, например...

on(press){
this.a=100;
this.inc=-10;
this.go=true;
}

onClipEvent(enterFrame){
if (this.go){
a+=inc;
if (a<0)
inc=-inc;
else if (a>100)
go=false;
else
_alpha=a;
}
}

Смольный (Smolniy)
09.01.2003, 04:19
Flash прорисовывает кадры фильма по след. алгоритму:

1 - выполнение всего кода, который должен быть выполнен сейчас
2 - прорисовка экрана
3 - ожидание

Все этапы 1-2-3 должны занять 1/FPS, т.е. в базовом случае 1/12 секунды. События кнопок выполняются тогда, когда они происходят - т.е. на этапе 3, прерывая его. (возможно, на этапе 2, прерывая его, но НЕ на этапе 1) Твой цикл ВЕСЬ выполняется на этапе 1. Т.е. к моменту прорисовки ты видишь полностью невидимый клип. Значит, надо разнести цикл на _разные кадры_. Т.е. использовать событие enterFrame клипов.

Max N Chubin_
09.01.2003, 11:55
вот код, по моему очень лаконичный и ровный, мож понравиться?

onClipEvent (load) {
this._alpha = endValue=20;
}
onClipEvent (enterFrame) {
this._alpha -= (this._alpha-endValue)/7;
}
onClipEvent (mouseDown) {
if(this.hitTest(_root._xmouse,_root._ymouse,1)){
endValue = 100;
}
}
onClipEvent (mouseUp) {
endValue = 20;
}

строка с hitTest нужна чтобы клип проявлялся только при нажатии мышки на клипе... в противном случае клип будет проявляться при нажатии кнопки мыши в любом месте экрана.
;)

2 DMN:
всякий раз задавать значение переменной заново при нажатии на мышачью кнопку - НЕПРАВИЛЬНО! Это нужно делать в блоке onLoad. И вообще лишние переменные тут никчему! Кроме того, в вашем варианте нет реверсивности. Да и использовать мышачье событие onPress для клипа не рекомендуется!

моё субъективно неправильное мнение! прошу без обид. Исправьте меня если я ошибся....

С уважением,
Макс.

Биогумус
09.01.2003, 21:05
Спасибо всем огромное большое сенкс за теплоту :)
Недумайте что я полный профан в программированнии
просто я рассеянный :) и сразу много софта всякого юзаю
до сих пор никак немогу от дельфей отвыкнуть
:= = :=

:))

derhab
09.01.2003, 21:13
Да и использовать мышачье событие onPress для клипа не рекомендуется!

Макс, почему?