Форум 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=99331)

VareNick 03.08.2007 03:01

Не работает цикл
 
Здравствуйте! Я знаком с action script сравнительно недавно, так что сильно не пинайте :)
Проблема в следующем: срабатывает только
Код:

i=1
, т.е. вот здесь получается
Код:

_root.scroll.img1.onEnterFrame = function () {
, ну и если
Код:

i=2
, соотвественно там 2 и т.д.

Код:

for(i=1;i<=7;i++){       
        _root.scroll["img"+i].onEnterFrame = function () {               
          if(this.hitTest(_xmouse, _ymouse)==true) {
          status.text="true";
  } else { status.text="false"; };
  }
}

Помогите, пожалуйста! Заранее, благодарю!

udaaff 03.08.2007 04:17

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

VareNick 03.08.2007 04:24

Изменил на scrolls и на statuss соответственно, не помогло, а причем тут поле вывода? переменная i туда не выводится.

udaaff 03.08.2007 04:36

Код:

for (var i = 0; i<=7; i++) {
        _root.scrolls["img"+i].onEnterFrame = function() {
                if (this.hitTest(_xmouse, _ymouse) == true) {
                        status.text = this;
                } else {
                        //status[i].text = "false";
                }
        };
}


VareNick 03.08.2007 14:30

Ну также срабатывает когда подвожу мышку к img1, а дальше уже не срабатывает, тем что вы изменили строчку
Код:

status.text=this
теперь он просто выводит где лежит этот мувик относительно корня.

udaaff 04.08.2007 00:14

в цикле ты прописываешь в onEnterFrame семи мувиков функцию проверки "находится над мувиком мышь или нет".
каждый кадр у тебя выполняется проверка этого условия для СЕМИ мувиков и все семь функций записывают результат в одно и то же текстовое поле. Функция одного мувика записывает туда true, все остальные false, функция чьего мувика срабатывает последняя, то и отображается у тебя в поле.

VareNick 04.08.2007 00:31

А как сделать для каждого? Не подскажите?

udaaff 04.08.2007 01:20

сделай семь текстовых полей для каждого в отдельности :)

Nirth 04.08.2007 01:38

Цитата:

Код:

for(i=1;i<=7;i++){       
        _root.scroll["img"+i].onEnterFrame = function () {               
          if(this.hitTest(_xmouse, _ymouse)==true) {
          status.text="true";
  } else { status.text="false"; };
  }
}


Увы и ах, но в ActionScript у циклов и прочих конструкций кроме "if" не может быть блока "else" как это например может быть в Python или Ruby.

Так же i нужно объявлять

Код:

for(var i:Number = 0; i <= 7 ; i ++)
А вообще это бред вешать столько onEnterFrame'ов

udaaff 04.08.2007 03:10

to Nirth
Цитата:

Увы и ах, но в ActionScript у циклов и прочих конструкций кроме "if" не может быть блока "else" как это например может быть в Python или Ruby.
в данном примене else относится к if, у него просто код неотформатирован.
Цитата:

А вообще это бред вешать столько onEnterFrame'ов
полностью с тобой согласен


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

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