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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 29.04.2008, 04:31
Stop Black PR! вне форума Посмотреть профиль Отправить личное сообщение для Stop Black PR! Посетить домашнюю страницу Stop Black PR! Найти все сообщения от Stop Black PR!
  № 1  
Ответить с цитированием
Stop Black PR!
 
Аватар для Stop Black PR!

Регистрация: Aug 2003
Адрес: Moscow
Сообщений: 113
Отправить сообщение для Stop Black PR! с помощью ICQ
По умолчанию Переданный в объект числовой параметр не хочет быть индексом массива

Есть класс с меню, в котором генерятся меню айтемы, каждый айтем - объект, получает в качестве параметра номер и ссылку на родитель (мувик-класс меню). Возникает странная вещь: переданный параметр-номер успешно выводится на экран, правильно смещает айтем, но отказывается быть индексом массива. Ошибка при выполнении:

Код:
TypeError: Error #1010: A term is undefined and has no properties.
	at MenuItem$iinit()[E:\projects\as3\Classes\MenuItem.as:21]
	at MainMenu$iinit()[E:\projects\as3\Classes\MainMenu.as:19]
	at App/initForms()[E:\projects\as3\Classes\App.as:28]
	at App$iinit()[E:\projects\as3\Classes\App.as:24]

Эксперименты показали, что если при инициализации объекта MenuItem вместо переменной подсунуть число, то всё удачно проходит.

Массив задаётся в классе Model:

Код:
data = new Object();
			data.cat = new Array();
			var i:uint;
			for (i=1; i<7;i++) {
				data.cat[i] = new Object();
				data.cat[i].name = "Меню"+i;
			}
MainMenu.as
Код:
package {
	import App;
	import Model;
	import MenuItem;
	import flash.display.Sprite;
	public class MainMenu extends Sprite{
		public var itemArr,myCat:Array;
		public static  var myParent:App;
		public var i:uint;
		public function MainMenu(parent:App) {
			myParent = parent;
			myCat = myParent.myModel.data.cat;
			y=100;
			x=30;
			
			itemArr = new Array();
			for (i=1; i<=myCat.length; i++) {
				//itemArr[i] = new MenuItem(this,2); - так работает
				itemArr[i] = new MenuItem(this,i);
				addChild(itemArr[i]); 
			}
			
		}
	}
}

MenuItem.as
Код:
package {
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.display.SimpleButton;
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	import flash.text.TextField; 
	import Model;
	import Controller;
	import MainMenu;
	public class MenuItem extends Sprite {
		//-------------------------
		public var myNum:uint;
		public var myParent:MainMenu;
		public var myCat:Array;
		//-------------------------
		public function MenuItem(parent:MainMenu,num:uint) {
			myParent = parent;
			myCat =  parent.myCat;
			myNum = num;
			txt.text = myCat[myNum].name; // а в качестве индекса в массиве не пашет!!!
			//txt.text = myCat[int(myNum)].name; - это тоже не работает
			//txt.text = "тебю "+myNum; - это тоже работает, номер верно выводится
			x = (myNum-1)*(width+5); // этот же номер успешно меняет координаты
		}
	}
}

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

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

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


 


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


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