Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.08.2009, 15:51
Waltz вне форума Посмотреть профиль Отправить личное сообщение для Waltz Найти все сообщения от Waltz
  № 1  
Ответить с цитированием
Waltz

Регистрация: Aug 2009
Сообщений: 4
По умолчанию Координаты из мувика в массив

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

Отрывки из программы :
Код 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
Где мои долгожданные координаты из массива? Помогите

Старый 03.08.2009, 16:50
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 2  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Ну во-первых, что говорит
Код:
trace(level_box[Block+nb]);
?

Во-вторых, правильнее будет так
Код:
trace(MyMass[1][3][0]);
trace(MyMass[1][2][0]);
trace(MyMass[1][1][0]);

Старый 03.08.2009, 19:12
Waltz вне форума Посмотреть профиль Отправить личное сообщение для Waltz Найти все сообщения от Waltz
  № 3  
Ответить с цитированием
Waltz

Регистрация: Aug 2009
Сообщений: 4
Цитата:
Сообщение от Kuruki Посмотреть сообщение
Ну во-первых, что говорит
Код:
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]);

Старый 03.08.2009, 19:58
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 4  
Ответить с цитированием
Kuruki

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

По второму:
Код:
MyMass[1][2];
MyMass[1][1]
таким образом вы обращаетесь к самому массиву, а не к значениям. Попробуйте в массив с yes добавить еще один элемент и посмотрите трэйс
Код:
MyMass.push([[1],[5],[6],["yes", "no"]]);

Старый 03.08.2009, 20:18
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код 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);

Старый 04.08.2009, 17:11
Waltz вне форума Посмотреть профиль Отправить личное сообщение для Waltz Найти все сообщения от Waltz
  № 6  
Ответить с цитированием
Waltz

Регистрация: Aug 2009
Сообщений: 4
Цитата:
Сообщение от Kuruki Посмотреть сообщение
По первому: я не спрашивал, что такое 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 это подмувики.

Старый 04.08.2009, 17:46
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 7  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
level_box["Block"+nb]._x.

Старый 04.08.2009, 18:23
Waltz вне форума Посмотреть профиль Отправить личное сообщение для Waltz Найти все сообщения от Waltz
  № 8  
Ответить с цитированием
Waltz

Регистрация: Aug 2009
Сообщений: 4
большое спасибо ) а ларчик просто открывался ! )

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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