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

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

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

Регистрация: Feb 2013
Адрес: 48.072602,39.492073
Сообщений: 1
Question Добавление внешних объектов на isoScene

Создал сцену ( isoScene ) и добавил на неё сетку при помощи библиотеки as3isolib (actionScript 3), Все работает отлично, но когда загружаю внешний файл (карту в формате *.swf), то при добавлении карты как ребенка ( addChild() ) к этой изометрической сцене выбивает ошибку " Неявное приведение значения типа Flash.Display:loader к несоответствующему типу as3isolib.data:iNode ". Если делать addChild просто к сцене, то карта нормально добавляется, но при перетаскивании сцены, она не шевелится. Подскажите, может както конвертировать надо или приём какой применить чтобы добавить объект в IsoScene?



Код AS3:
package src 
{
	import as3isolib.geom.Pt;
	import flash.display.Loader;
	import flash.display.MovieClip;
	import as3isolib.display.scene.IsoGrid;
	import as3isolib.display.primitive.IsoBox;
	import as3isolib.display.scene.IsoScene;
	import as3isolib.display.IsoView;
	import as3isolib.graphics.SolidColorFill;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLRequest;
 
 
	/**
	 * ...
	 * @author KajeNick
	 */
 
	public class Map extends MovieClip
	{
 
		private var grid:IsoGrid;
		private var scene:IsoScene;
		private var viewPort:IsoView;
		private var loader:Loader;
 
		public function Map() 
		{			
 
			viewPort = new IsoView();
			viewPort.setSize(800, 600); //размер карты
			viewPort.centerOnPt(new Pt(0, 0, 0), false); //отступ от краев экрана   resource/maps/map1.swf
			addChildAt(viewPort, 0);
			viewPort.addEventListener(MouseEvent.MOUSE_DOWN, onStartPan, false, 0, true); //таскать карту туда сюда
 
			var loader:Loader = new Loader();
			loader.load(new URLRequest("resource/maps/map1.swf"));			
			addChildAt(loader, 0);
 
			scene = new IsoScene();
 
			viewPort.addScene(scene);
			viewPort.addChild(loader);		
 
			grid = new IsoGrid();
			grid.setGridSize(16, 16, 1);
			grid.cellSize = 30;
			grid.showOrigin = false;
 
			scene.addChild(grid);	
 
 
			viewPort.addChildAt(loader, numChildren - 1); //ставим землю ниже сетки 
 
 
            addEventListener(Event.ENTER_FRAME, onRender, false, 0, true);
		}
 
		private function onRender(e:Event):void
        {
 
            scene.render();
        }
 
		//перемещение карты
		private var panPt:Pt;
		private function onStartPan(e:MouseEvent):void
        {
            panPt = new Pt(stage.mouseX, stage.mouseY);
 
            viewPort.removeEventListener(MouseEvent.MOUSE_DOWN, onStartPan); 
            viewPort.addEventListener(MouseEvent.MOUSE_MOVE, onPan, false, 0, true);
            viewPort.addEventListener(MouseEvent.MOUSE_UP, onStopPan, false, 0, true);			
 
        }
 
        private function onPan(e:MouseEvent):void
        {
            viewPort.panBy(panPt.x - stage.mouseX, panPt.y - stage.mouseY);
            panPt.x = stage.mouseX;
            panPt.y = stage.mouseY;
        }
 
        private function onStopPan(e:MouseEvent):void
        {
            viewPort.removeEventListener(MouseEvent.MOUSE_MOVE, onPan);
            viewPort.removeEventListener(MouseEvent.MOUSE_UP, onStopPan); 
            viewPort.addEventListener(MouseEvent.MOUSE_DOWN, onStartPan, false, 0, true);
        }
		// конец перемещения карты
 
	}
 
}

Старый 23.02.2013, 13:35
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 2  
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Всё верно, что выдаёт ошибку.

Вы пытаетесь объект типа лоадэр добавить в список отображения. В то время как в список отображения можно поместить только объекты типа DisplayObject. Другими словами, вывести на экран загрузчик нельзя, а можно только сам контент, который для начала нужно загрузить, и послушать лоадер на предмет загрузки. И только после того как загрузка произошла, помещать в список отображения контент, который загрузил лоадер, а не сам лоадер.

Старый 23.02.2013, 13:51
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 3  
spirit2

Регистрация: Dec 2009
Сообщений: 125
Цитата:
Сообщение от yasha005 Посмотреть сообщение
Всё верно, что выдаёт ошибку.

Вы пытаетесь объект типа лоадэр добавить в список отображения. В то время как в список отображения можно поместить только объекты типа DisplayObject. Другими словами, вывести на экран загрузчик нельзя, а можно только сам контент, который для начала нужно загрузить, и послушать лоадер на предмет загрузки. И только после того как загрузка произошла, помещать в список отображения контент, который загрузил лоадер, а не сам лоадер.
http://help.adobe.com/ru_RU/FlashPla...ay/Loader.html

Старый 23.02.2013, 16:04
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 4  
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Нее... Лоадер тут не причем. Вернее отчасти не причем. Судя по всему isoScene в параметрах функции addChild ожидает объект, реализующий интерфейс iNode. Соотсветсвтенно, чтобы загруженный мувик отобразить, вам нужно loader ваш обернуть в объект, реализующий этот самый интерфейс iNode.
__________________
мой пустой блог

Старый 23.02.2013, 20:00
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Вопросы по API сторонних библиотек задаются в разделе "API приложений и сред"
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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