Просмотр полной версии : Вопрос по описанию цикла
Acrossfy
08.03.2009, 18:33
Здравствуйте.
Такая ситуация. Нужно задать цикл примерного вида if then else. Пытаюсь понять, как это точнее описать в AS, хелп особо не выручил. На словах нужно следующее:
Если мышь не наведена на клип, должны постоянно последовательно выполняться действия 1 и 2. Если мышь на клип наведена, цикл останавливается, однократно выполняется действие 3.
Заранее спасибо за помощь.
for(true){
//ну за каждую итерацию цикла действия 1,2 выполняються независимо от
//положения крысы;
if(/*клип в фокусе*/true){
//однократно выполняеться дейтсвие 3;
break;
}
Добавлено через 1 минуту
фигурная (}) после break;
Mnilionic
08.03.2009, 19:45
var func = function(){
trace('действие 1');
trace('действие 2');
}
var intr;
my_mc.onRollOver = function(){
intr = clearInterval(intr)
intr = setInterval(func, 1000);
}
my_mc.onRollOut = function(){
intr = clearInterval(intr)
trace('действие 3');
}
my_mc.onRollOver();
Acrossfy
08.03.2009, 19:51
axiom, попробовал. Допустим, вот такой пример не сработал:
for(true){
trace("мышь не наведена - 1");
trace("мышь не наведена - 2");
if(first_mc.onRollOver true){
trace("мышь наведена");
break;
}
}
Вылезли ошибки касательно точко-запятых. Также мне не совсем ясно, как обозначить mc.onRollOver за true. Пробовал через "=", через "-", разницы не было.
Добавлено через 1 минуту
Mnilionic, секунду. Сейчас попробую. Только больно громоздко мне кажется..
Добавлено через 8 минут
Mnilionic, не тот немного вариант. Полно нюансов. нужно последовательное выполнение действий, то есть сразу после действия 1, действие 2, потом снова 1, потом опять 2. Поэтому нужен был просто цикл. Поскольку действия в моей флешке - программные движения объекта, нужно чтобы выполнялось это последовательно, сразу, без интервалов. Плюс ко всему, при не выполнении условия, в данном случае - мышь наведена, действия должны возобновляться. Так что тут только через цикл надо решать.
Mnilionic
08.03.2009, 23:57
нет, это нужно делать через интервал :)
Что-то типа
function func1(){ trace("мышь не наведена - 1") };
function func2(){ trace("мышь не наведена - 2") };
first_mc.onRollOver = function(){
trace("мышь наведена");
this.onEnterFrame = null;
}
first_mc.onRollOut = function(){
this.onEnterFrame = function(){
func1();
func2();
}
}
first_mc.onRollOut();
Acrossfy
09.03.2009, 00:59
Wolsh, спасибо. С трейсами все идет, как надо. Стоит заменить их класс, в моем случае твинлайт, как надо уже не работает. Из-за чего понять не могу.
Ниже исходник по примеру Wolsh. Буду благодарен, если кто поможет понять в чем косяк.
Действия 1,2 и 3 - движения мувиклипа классом TweenLite.
В примере почему то действие 1 не выполняется.
у меня другой вопрос по циклам
можно как нибудь это в цикл запихать??
z1.onRollOver = function() { z1._alpha = 20; }
z2.onRollOver = function() { z2._alpha = 20; }
z3.onRollOver = function() { z3._alpha = 20; }
z4.onRollOver = function() { z4._alpha = 20; }
z5.onRollOver = function() { z5._alpha = 20; }
z6.onRollOver = function() { z6._alpha = 20; }
z7.onRollOver = function() { z7._alpha = 20; }
z8.onRollOver = function() { z8._alpha = 20; }
так не работает
for (var i = 1; i<=8; i++) {
_root["z"+i].onRollOver = function() {_root["z"+i]._alpha = 20;}
}
nOobCrafter
17.03.2009, 13:38
for (var i = 1; i<=8; i++)
{
var n:MovieClip = _root["z"+i];
n.onRollOver = function()
{
this._alpha = 20;
}
n.onRollOut = function()
{
this._alpha = 50;
}
}
по идее так
webgirl, прочитайте (http://www.flasher.ru/forum/showthread.php?t=122539).
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.