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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.04.2010, 23:46
gashhik вне форума Посмотреть профиль Отправить личное сообщение для gashhik Посетить домашнюю страницу gashhik Найти все сообщения от gashhik
  № 1  
Ответить с цитированием
gashhik
 
Аватар для gashhik

Регистрация: Jul 2003
Адрес: Kiev
Сообщений: 77
По умолчанию импорт мувиклипа из библиотеки по имени массива

День добрый. В АС3 я пока не очень и нужна ваша помошь, дорогие знатоки.

Ситуация такая - есть поверхность на которую я подтягиваю из библиотеки своего героя игры (hero) и дублирую для тестирования коллизий с поверхностью.

Код AS3:
	private function init(e:Event=null):void {
		_collisionList=new CollisionList(terrain);
		_CharsArray=[];
		for (var i:uint=0; i<4; i++) {;
			var chars:hero=new hero  ;
			_CharsArray.push(chars);
			addChild(chars);
			_collisionList.addItem(chars);
		}
	}
Теперь я хочу не дублировать героя, а поставить героя и других персонажей на карту с разными координатами. Для этого я создаю два массивчика: один с именами персонажей в библиотеке, а другой с соответствующими им координатами по горизонтали.

_namesArray=["myhero","fish","turbo"];
_xArray=["400","800","1100"];

Теперь я хочу перебирая элементы массива ставить на карту персонажей с соответствующими именами из библиотеки. Но у меня не получаеться
Делаю так:

Код AS3:
	private function init(e:Event=null):void {
		_collisionList=new CollisionList(terrain);
 
		_CharsArray=[];
		_namesArray=["myhero","fish","turbo"];
		_xArray=["400","800","1100"];
 
		for (var i:uint=0; i<_namesArray.length; i++) {
			var names=_namesArray[i];
			var chars:MovieClip=new names  ; 			
			chars.x=_xArray[i];
			_CharsArray.push(chars);
			addChild(chars);
			_collisionList.addItem(chars);
		}
}
Вообщем я понимаю, что я не прописал что-то, но не знаю, что...

Подскажите, что прописать, что бы элемент массива считался мувиклипом и подтягивался из библиотеки.
__________________
Immortal

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
getDefinitionByName()

Старый 27.04.2010, 00:08
mickfallout вне форума Посмотреть профиль Отправить личное сообщение для mickfallout Найти все сообщения от mickfallout
  № 3  
Ответить с цитированием
mickfallout
 
Аватар для mickfallout

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
я делаю это так:
Код AS3:
		static private var MovieClipsClassesObject:Object = { };// хранилище всех классов MovieClip'ов использованных в функции newMovieClip
		static public function newMovieClip(imageName:String):MovieClip	//создает MovieClip по имени в ресурсах
		{
			var movieClipsClass:Class;
			if (MovieClipsClassesObject[imageName] != null )	 //если в хранилище MovieClip'ов под таким именем уже что-то есть
			{
				//trace("requested mc "+imageName+", give out from MovieClipsClassesObject")
				movieClipsClass = MovieClipsClassesObject[imageName];// выдаем класс MovieClip'а из хранилища
			}else {
				//trace("requested new mc "+imageName+", give out from resourcesLoader")
				movieClipsClass = resourcesLoader.content.loaderInfo.applicationDomain.getDefinition(imageName) as Class; //из resourcesLoader берется описание класса нужного MovieClip'а
				MovieClipsClassesObject[imageName] = movieClipsClass;          //и записывается в хранилище
			}
			return new movieClipsClass();
		}

Старый 27.04.2010, 00:47
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 4  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
gashhik, не в коем случаи не делайте так как делает mickfallout.

Старый 27.04.2010, 01:21
gashhik вне форума Посмотреть профиль Отправить личное сообщение для gashhik Посетить домашнюю страницу gashhik Найти все сообщения от gashhik
  № 5  
Ответить с цитированием
gashhik
 
Аватар для gashhik

Регистрация: Jul 2003
Адрес: Kiev
Сообщений: 77
фух мозги уже плавлятся.....

Код AS3:
private function init(e:Event=null):void {
      _collisionList=new CollisionList(terrain);
 
	_CharsArray=[];
	_namesArray=["myhero","fish","turbo"];
	_xArray=["400","800","1100"];
 
	for (var i:uint=0; i<_namesArray.length; i++) {
		var names=_namesArray[i];
                       //trace(names+" class: "+getQualifiedClassName(names));	
                       var names:Class=getDefinitionByName("myhero") as Class;
		var chars:MovieClip=new names  ; 			
		chars.x=_xArray[i];
		_CharsArray.push(chars);
		addChild(chars);
		_collisionList.addItem(chars);
		}
}
Ошибка:
Код AS3:
TypeError: Error #1034: Type Coercion failed: cannot convert "myhero" to Class.
Я должен тот класс на который я ссылаюсь как то по особенному обработать?
__________________
Immortal

Старый 27.04.2010, 01:36
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 6  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
Код AS3:
private function init(e:Event = null):void {
 
      _collisionList = new CollisionList(terrain);
 
	_CharsArray = [];
	_namesArray = ["myhero","fish","turbo"];
	_xArray = ["400", "800", "1100"];
 
        var len:int = _namesArray.length;
 
	for (var i:int = 0; i < len; i++) {
 
                var charClass:Class = getDefinitionByName(_namesArray[i]) as Class;
		var char:MovieClip = new charClass()  ; 			
		char.x =_xArray[i];
		_CharsArray.push(char);
		addChild(char);
		_collisionList.addItem(char);
 
	}
 
}
__________________
freelance | Раздор


Последний раз редактировалось derhab; 27.04.2010 в 01:39.
Старый 27.04.2010, 01:45
gashhik вне форума Посмотреть профиль Отправить личное сообщение для gashhik Посетить домашнюю страницу gashhik Найти все сообщения от gashhik
  № 7  
Ответить с цитированием
gashhik
 
Аватар для gashhik

Регистрация: Jul 2003
Адрес: Kiev
Сообщений: 77
Спасибо тебе добрый человек!!1 РАБОТАЕТ :-*
__________________
Immortal

Старый 27.04.2010, 02:20
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А что мешало хранить в массиве классы, а не строки с их именами?
__________________
Reality.getBounds(this);

Старый 27.04.2010, 02:41
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 9  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
Цитата:
Сообщение от Wolsh Посмотреть сообщение
А что мешало хранить в массиве классы, а не строки с их именами?
всмысле хранить в массиве уже созданные экземпляры классов?
типа:
Код AS3:
[new myhero(), new fish(), new turbo()];
__________________
freelance | Раздор


Последний раз редактировалось derhab; 27.04.2010 в 02:46.
Старый 27.04.2010, 02:44
gashhik вне форума Посмотреть профиль Отправить личное сообщение для gashhik Посетить домашнюю страницу gashhik Найти все сообщения от gashhik
  № 10  
Ответить с цитированием
gashhik
 
Аватар для gashhik

Регистрация: Jul 2003
Адрес: Kiev
Сообщений: 77
Не понимаю...
Как вы это видите в коде?
Код AS3:
_namesArray = ["myhero:MovieClip","fish:MovieClip","turbo:MovieClip"]
типа так?
__________________
Immortal

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

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

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


 


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


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