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

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

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

Регистрация: Sep 2008
Сообщений: 27
Question Прелоадер с загрузкой внешнего swf

Есть файл preloader.swf который подгружает основной файл с того же домена что и он сам.

Код AS3:
package scripts {
 
	import flash.display.*;
	import flash.events.*;
	import fl.events.*;
	import flash.ui.*;
	import flash.net.*;
	import flash.external.*;
	import flash.text.*;
	import flash.system.*;
 
	public class preloader extends MovieClip {
 
		var loader:Loader = new Loader();
 
		public function preloader() {
			//загружаем основную флешку
			var request:URLRequest = new URLRequest("http://сайт.ру/файл.свф"); 
			loader.load(request);
			//
			loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
		}
 
		public function onProgress(e:ProgressEvent):void {
			preloader_percent.text = Math.floor(e.bytesLoaded/(e.bytesTotal/100)).toString()+"%";
		}
 
		public function onComplete(e:Event):void {
			preloader_percent.text = "100%";
			addChild(loader);
		}
 
	}
 
}
проценты бегают во время загрузки. ОДнако по окончании загрузки выдаёт такую ошибку:
Цитата:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at scripts::index()
при этом флешка на сцену не добавляется.

что делать?

Старый 21.08.2011, 22:07
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
А что во флэшке подгружаемой? Ошибок в ней нет?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Sep 2008
Сообщений: 27
Ошибок в подгружаемой флешке нет, она отдельно сама по себе полностью работоспособна. Насколько я понял проблема в том что в моммент добавления загруженной флешки на сцену stage ещё не сущесвтует. Однако во всех примерах прелоадеров используется именно такая последовательность, как же у них тогда всё работает непонятно!

Старый 22.08.2011, 12:55
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Ну скорее всего просто используется событие Event.ADDED_TO_STAGE в подгружающей флешке и уже после его доставки добавляется загруженная.
Так же внутри подгружаемой флешки нужно добавить разрешение для домена, на котором расположена згружающая флешка, ну или разрешения для всех доменов:
Код AS3:
Security.allowDomain("*");
как-то так

Но в данном случае дело не в этом
Нужно для начала поменять местами вызов загрузки и добавление слушателей к загрузчику, так будет правильнее.
А в функции комплит, я бы лучше сделал так:
Код AS3:
public function onComplete(e:Event):void {
			preloader_percent.text = "100%";
			addChild(e.currentTarget.content as DisplayObject);
		}


Последний раз редактировалось goodguy; 22.08.2011 в 12:58.
Старый 22.08.2011, 13:12
CrazyPHP вне форума Посмотреть профиль Отправить личное сообщение для CrazyPHP Найти все сообщения от CrazyPHP
  № 5  
Ответить с цитированием
CrazyPHP

Регистрация: Sep 2008
Сообщений: 27
Спасибо за помощь, ХорошийПарень. Оказалось я в разделе объявления переменных в подгружаемой флешке использовал обращение к stage:
Код AS3:
var flashVars: Object = stage.loaderInfo.parameters as Object;
потому и ругалось

Старый 22.08.2011, 13:19
PsixokoT вне форума Посмотреть профиль Отправить личное сообщение для PsixokoT Найти все сообщения от PsixokoT
  № 6  
Ответить с цитированием
PsixokoT

Регистрация: May 2008
Сообщений: 63
ошибка в методе index()

Старый 22.08.2011, 14:32
dr1emaver вне форума Посмотреть профиль Отправить личное сообщение для dr1emaver Найти все сообщения от dr1emaver
  № 7  
Ответить с цитированием
dr1emaver

Регистрация: Aug 2011
Сообщений: 24
CRAZYPHP,если не секрет как решил проблемку?

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

Регистрация: Sep 2008
Сообщений: 27
написал же пост выше

Старый 22.08.2011, 16:24
dr1emaver вне форума Посмотреть профиль Отправить личное сообщение для dr1emaver Найти все сообщения от dr1emaver
  № 9  
Ответить с цитированием
dr1emaver

Регистрация: Aug 2011
Сообщений: 24
Код AS3:
var flashVars: Object = stage.loaderInfo.parameters as Object;
Ну а как ты сделал, чтобы все нормально было, просто у меня такая же проблема с прелоудером. Он доходит до 100% и все. а основную флешку не грузит.. Точно также объявлял flashVars в Maine' и получал, что "Не удается вызвать свойство или метод со ссылкой на объект "null". at Main()"

Старый 22.08.2011, 17:24
CrazyPHP вне форума Посмотреть профиль Отправить личное сообщение для CrazyPHP Найти все сообщения от CrazyPHP
  № 10  
Ответить с цитированием
CrazyPHP

Регистрация: Sep 2008
Сообщений: 27
Цитата:
Сообщение от dr1emaver Посмотреть сообщение
Код AS3:
var flashVars: Object = stage.loaderInfo.parameters as Object;
Ну а как ты сделал, чтобы все нормально было, просто у меня такая же проблема с прелоудером. Он доходит до 100% и все. а основную флешку не грузит.. Точно также объявлял flashVars в Maine' и получал, что "Не удается вызвать свойство или метод со ссылкой на объект "null". at Main()"
ну так ведь надо в Main() поставить слушатель на событие Event.ADDED_TO_STAGE, чтобы запускать инициализацию, после того как подгружаемая флешка разместится на сцене:

Код AS3:
               public function Main(){
			//инициализации при размещении на сцене
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
 
		}
 
		private function init(e:Event = null):void 
		{
			//удалим слушатель
			removeEventListener(Event.ADDED_TO_STAGE, init);
                                 //пишем что хотели.......
                       }

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

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

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


 


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


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