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

Waltz 03.08.2009 15:51

Координаты из мувика в массив
 
Всем добрый день. У меня такая проблема, я не могу из мувика взять координаты и загрузить в массив. Точнее все как бы загружается, но на экран в конечном результате получаю

Отрывки из программы :
Код AS1/AS2:

var MyMass:Array = new Array;
    MyMass.push([[0],[0, 0, 0]]);
 
function qwe (clip) {
MyMass.push([[nb], [clip._x], [clip._y], ["yes"]]);
} 
 
 qwe(level_box[Block+nb]); // nb - это у меня нумерация мувиков идет так бы это выглядело level_box.Block1
 
 
 trace(MyMass[1][3]); <- при данном запросе я получаю на консоль "yes"
 
 trace(MyMass[1][2]); < - при данном запросе получаю на консоль undefined
 trace(MyMass[1][1]); < - при данном запросе получаю на консоль undefined

Где мои долгожданные координаты из массива? :) Помогите

Kuruki 03.08.2009 16:50

Ну во-первых, что говорит
Код:

trace(level_box[Block+nb]);
?

Во-вторых, правильнее будет так
Код:

trace(MyMass[1][3][0]);
trace(MyMass[1][2][0]);
trace(MyMass[1][1][0]);


Waltz 03.08.2009 19:12

Цитата:

Сообщение от Kuruki (Сообщение 840210)
Ну во-первых, что говорит
Код:

trace(level_box[Block+nb]);
?

Во-вторых, правильнее будет так
Код:

trace(MyMass[1][3][0]);
trace(MyMass[1][2][0]);
trace(MyMass[1][1][0]);


по первому :
Код AS1/AS2:

trace(level_box[Block+nb]);

в общей моей программе у всех мувиков название идет Block1, Block2........Block30. nb - это переменая которая меняется за счет цикла, что бы можно было перебирать мувики.

по второму :
Код AS1/AS2:

trace(MyMass[1][3][0]);
trace(MyMass[1][2][0]);
trace(MyMass[1][1][0]);

такой вариант не работает.

Обращение к третему элементу
таким
Код AS1/AS2:

trace(MyMass[1][3][0]);

или таким
Код AS1/AS2:

trace(MyMass[1][3]);

срабатывает и на экране появляется "yes", но обращение к другим элементам

так
Код AS1/AS2:

trace(MyMass[1][2][0]);
trace(MyMass[1][1][0]);

или так
Код AS1/AS2:

trace(MyMass[1][2]);
trace(MyMass[1][1]);

выдает
Код AS1/AS2:

undefined

помогите :((((

Добавлено через 10 минут
причем при работе с массивом вот так все работает. Если я туда вношу просто числа то все нормально.
Код AS1/AS2:

 var MyMass:Array = new Array;
 
MyMass.push([[0],[0, 0, 0]]);
 
MyMass.push([[1],[2],[3],[4]]);
MyMass.push([[1],[5],[6],["yes"]]);
 
 
trace(MyMass[2][2]);


Kuruki 03.08.2009 19:58

По первому: я не спрашивал, что такое nb, я спрашивал, что выдает трэйс. А он наверняка выдает undefined, это значит что клипа level_box[Block+nb] не существует, отсюда и идут элементы массива со значением undefined.

По второму:
Код:

MyMass[1][2];
MyMass[1][1]

таким образом вы обращаетесь к самому массиву, а не к значениям. Попробуйте в массив с yes добавить еще один элемент и посмотрите трэйс
Код:

MyMass.push([[1],[5],[6],["yes", "no"]]);

udaaff 03.08.2009 20:18

Код AS1/AS2:

MyMass.push([[nb], [clip._x], [clip._y], ["yes"]]);

Waltz, зачем каждую переменную еще в массив запихивать? :)

Удобнее здесь объект использовать:
Код AS1/AS2:

// на сцене mc0
var array:Array = [];
 
var mc:MovieClip = _root["mc" + 0];
array.push({ mc: mc, x: mc._x, y: mc._y });
 
var object:Object = array[0];
 
trace(object.mc + " " + object.x + " " + object.y);


Waltz 04.08.2009 17:11

Цитата:

Сообщение от Kuruki (Сообщение 840255)
По первому: я не спрашивал, что такое nb, я спрашивал, что выдает трэйс. А он наверняка выдает undefined, это значит что клипа level_box[Block+nb] не существует, отсюда и идут элементы массива со значением undefined.

По второму:
Код:

MyMass[1][2];
MyMass[1][1]

таким образом вы обращаетесь к самому массиву, а не к значениям. Попробуйте в массив с yes добавить еще один элемент и посмотрите трэйс
Код:

MyMass.push([[1],[5],[6],["yes", "no"]]);



Спасибо за варианты. Спасибо что уделяете вермя и отвечаете. Udaff, твой вариант это конечно решение, но я хочу подругому, если не получится как я хочу то буду пользовать твой :))



Куруки, по первому :
Мувик такой есть и он у меня выводится на экран перед попыткой загрузки координат у меня есть в программе такая строчка
Код AS1/AS2:

level_box.attachMovie("Block2","Block"+nb,_root.level_box.getNextHighestDepth(), 
          {_x:(Box_x+Bl_x)+(xl*32), _y:(Box_y+Bl_y)+(yl-11)*32 });

мувик на экран выводится.
И вопрос попрежнему остается открытый, почему же коорднинаты не загружаются в массив.

Давайте попробую описать, что же я хочу получить. Мне нужно создать двухмерный массив в котором будут храниться и координаты и свойства мувика . В массиве я хотел , что бы все расположилось таким образом.
Код AS1/AS2:

 
MyMass[1][0] - mNumBlock
MyMass[1][1] - mBlock_x
MyMass[1][2] - mBlock_y
MyMass[1][3] - mbBlockMove

Причем мувики из которых я беру координаты в массив перебираю вот так
Код AS1/AS2:

for nb=1 ......100..{
level_box[Block+nb]._x. 
}

level_box - это тоже мувик , а Block1.....Block100 это подмувики.

udaaff 04.08.2009 17:46

Код AS1/AS2:

level_box["Block"+nb]._x.


Waltz 04.08.2009 18:23

большое спасибо :)) а ларчик просто открывался ! :))

Udaff, большое спасибо :))
Курики, тоже большео спасибо. :))


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

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