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

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

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

Регистрация: Nov 2005
Сообщений: 42
По умолчанию динамическая загрузка файлов

сделал контейнер, пытаюсь загрузить в него игру, получаю вот такую ошибку
Цитата:
ArgumentError: Error #2180: It is illegal to move AVM1 content (AS1 or AS2) to a different part of the displayList when it has been loaded into AVM2 (AS3) content.
at flash.display:isplayObjectContainer/addChild()
at Untitled_fla::MainTimeline/onCompleteHandler()
вот код

Код AS3:
function startLoad() {
	var mLoader:Loader = new Loader();
	var mRequest:URLRequest = new URLRequest("http://www.mysite.loc/swf/game.swf");
	mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
	mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
	mLoader.load(mRequest);
}
 
function onCompleteHandler(loadEvent:Event) {	
	addChild(loadEvent.currentTarget.content);
}
 
function onProgressHandler(mProgress:ProgressEvent) {
	var percent:Number = mProgress.bytesLoaded / mProgress.bytesTotal;
	trace(percent);
}
startLoad();

Старый 04.03.2010, 01:14
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Ну типа нельзя переносить контент loader.content или loader.contentLoaderInfo.content (в данном случае это один и тот же объект), коим и является Ваш loadEvent.currentTarget.content в другой контейнер (у Вас это this), если этот контент является AVM1 movie. Делайте добавление самого лоадера, а там и его контент подтянется
Код AS3:
addChild(loadEvent.currentTarget.loader)
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 04.03.2010 в 01:21.
Старый 04.03.2010, 01:21
Stajor вне форума Посмотреть профиль Отправить личное сообщение для Stajor Найти все сообщения от Stajor
  № 3  
Ответить с цитированием
Stajor

Регистрация: Nov 2005
Сообщений: 42
Цитата:
Сообщение от dimarik Посмотреть сообщение
Ну типа нельзя переносить контент loader.content или loader.contentLoaderInfo.content, коим и является Ваш loadEvent.currentTarget.content в другой контейнер (у Вас это это this), если этот контент является AVM1 movie. Делайте
Код AS3:
addChild(loadEvent.currentTarget.loader)
спасибо. я недавно начал работать с АС и не знаю все тонкости. вот возник еще вопрос как пропорционально увеличить размер загружаемого файла, если размеры контейнера 500 х 500, а размер игры 350 х 400

Старый 04.03.2010, 01:31
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Манипулируйте свойствами width и height контейнера.
Пропорции изучаются... дай бох памяти, в пятом классе?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 04.03.2010, 01:51
Stajor вне форума Посмотреть профиль Отправить личное сообщение для Stajor Найти все сообщения от Stajor
  № 5  
Ответить с цитированием
Stajor

Регистрация: Nov 2005
Сообщений: 42
Цитата:
Сообщение от dimarik Посмотреть сообщение
Манипулируйте свойствами width и height контейнера.
Пропорции изучаются... дай бох памяти, в пятом классе?
когда был тот пятый класс ...

Спасибо за наводку.

И последний вопрос (я надеюсь). flasvars подгружаемому клипу надо передавать в ручную или он и так их видит?

Старый 04.03.2010, 02:27
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Ну да. Он их видит с расстояния 5 метров всего лишь ). Лучше вножную.

Но на одном мы сошлись. Передавать их надо. Поскольку доступа к loader.contentLoaderInfo.parameters у AVM1 Movie нет и не будет (?), то советую передавать их в query string на старте загрузки. Типа
Код AS3:
loader.load( new URLRequest("http://aaa.aaa/dir/myAVM1swf.swf?var1=2&var2=asd") )
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 04.03.2010 в 02:32.
Старый 04.03.2010, 03:03
Stajor вне форума Посмотреть профиль Отправить личное сообщение для Stajor Найти все сообщения от Stajor
  № 7  
Ответить с цитированием
Stajor

Регистрация: Nov 2005
Сообщений: 42
Цитата:
Сообщение от dimarik Посмотреть сообщение
Ну да. Он их видит с расстояния 5 метров всего лишь ). Лучше вножную.

Но на одном мы сошлись. Передавать их надо. Поскольку доступа к loader.contentLoaderInfo.parameters у AVM1 Movie нет и не будет (?), то советую передавать их в query string на старте загрузки. Типа
Код AS3:
loader.load( new URLRequest("http://aaa.aaa/dir/myAVM1swf.swf?var1=2&var2=asd") )
так и думал, спасибо.

Возникла проблема, при ресайзинге, персонаж ушел под "землю"

[IMG]http://img401.**************/img401/2363/20100304005833.png[/IMG]

Код AS3:
function onCompleteHandler(loadEvent:Event) {
	trace(
		"Stage size: " + stage.stageWidth + " x " + stage.stageHeight + 
		"\nMovie size: " + loadEvent.currentTarget.loader.width + " x " + loadEvent.currentTarget.loader.height + 
		"\nMovie content size: " + loadEvent.currentTarget.loader.content.width + " x " + loadEvent.currentTarget.loader.content.height
	);
 
	var loaderNewWidth:Number;
	var loaderNewHeight:Number;
	var loaderWidth:Number	 	= loadEvent.currentTarget.loader.content.width;
	var loaderHeight:Number 	= loadEvent.currentTarget.loader.content.height;
	var destinationRatio:Number	= stage.stageWidth / stage.stageHeight;
	var targetRatio:Number 		= loaderWidth / loaderHeight;
 
	if (targetRatio > destinationRatio) {
		loaderNewHeight = (stage.stageWidth / loaderWidth) * loaderHeight;
		loaderNewWidth = stage.stageWidth;
	} 
	else {
		loaderNewWidth = (stage.stageHeight / loaderHeight) * loaderWidth;
		loaderNewHeight = stage.stageHeight;
	}
 
	trace(loaderNewWidth + " x " + loaderNewHeight);
 
	//loadEvent.currentTarget.loader.width = loaderNewWidth;
	//loadEvent.currentTarget.loader.height = loaderNewHeight;
	loadEvent.currentTarget.loader.content.width 	= loaderNewWidth;
	loadEvent.currentTarget.loader.content.height	= loaderNewHeight;
 
	loadEvent.currentTarget.loader.content.x = 0;
	loadEvent.currentTarget.loader.content.y = 0;
 
	addChild(loadEvent.currentTarget.loader)
}

Старый 04.03.2010, 03:16
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Я так понимаю, что размер AVM1Movie больше, чем размер персонажа ) Сделайте
Код AS3:
// Мой любимый цвет для визуального тестирования bounds чего-нить визуального.
loadEvent.currentTarget.loader.opaqueBackground = 0xFF0000;
И все будет понятно.

ЗЫ Вы очередной Вконтактер? )
зызы Забываю все время спросить Вас. Вот Вы говорите: - мол есть "динамическая" загрузка файлов. А я спрашиваю: - а что такое тогда "нединамическая" загрузка файлов?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 04.03.2010 в 03:24.
Старый 04.03.2010, 03:36
Stajor вне форума Посмотреть профиль Отправить личное сообщение для Stajor Найти все сообщения от Stajor
  № 9  
Ответить с цитированием
Stajor

Регистрация: Nov 2005
Сообщений: 42
Цитата:
Сообщение от dimarik Посмотреть сообщение
ЗЫ Вы очередной Вконтактер? )
зызы Забываю все время спросить Вас. Вот Вы говорите: - мол есть "динамическая" загрузка файлов. А я спрашиваю: - а что такое тогда "нединамическая" загрузка файлов?
Нет в контатке не сижу и не думал для них писать, но теперь задумался. я пытаюсь аппликацию для facebook написать (я там обитаю). сделал как вы сказали, подогнал размеры, но не помогло. Вот что получаю из trace.

Цитата:
Stage size: 500 x 357
размер игры: 499.7000599880024 x 357
P.S. динамическая потому что должна получать путь до swf через flashvars и загружать игры. Пытался сделать на Flex, тоже не получалось. и файл был в разы больше. Теперь вот решил попробовать на чистом AS, но похоже знаний у меня сильно не хватает.

Старый 04.03.2010, 03:45
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 10  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
На скриншоте я отчетливо вижу пару артефактов, говорящих о забавном ресайзе: стена парит на несколько пикселей над землей и в толще почвы прослеживается пара отчетливо видных горизонтальных линий. Если это так и предусмотрено в оригинале, то все ок.

Однако если я предположу, что позиционирование некоторых объектов внутри AVM1Movie происходит относительно размеров его _root, то это будет наивно? Не пытались ли Вы запустить эту флеху без ресайза?

Цитата:
размеры контейнера 500 х 500, а размер игры 350 х 400
и
Цитата:
Stage size: 500 x 357, размер игры: 499.7000599880024 x 357
По-моему что-то неправильно с размерами контейнера.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


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

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

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


 


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


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