PDA

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


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'ов
полностью с тобой согласен