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

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

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

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
По умолчанию Прелоудер и Flashdevelop

Добрый день!

Только что перешел на новый стиль разработки. Flash IDE использую только для генерации SWC-библиотеки, весь код пишу в FlashDevelop. Итак, создал в ФД проект с прелоудером, вот что у меня в классе Main:
Код AS3:
		private var preloader:MovieClip;
		private var loader:Loader = new Loader;
 
		public function Main():void {
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			instance = this;
			loader.load(new URLRequest(Settings.host+"Preloader1.swf"));
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPreloaderLoaded);
		}
 
		private function onPreloaderLoaded(e:Event):void{
			preloader = e.currentTarget.content;
			addChild(preloader);
			addEventListener(Event.ENTER_FRAME, onFrame);
		}
 
		private function onFrame(e:Event):void{
			preloader.count = stage.loaderInfo.bytesLoaded/stage.loaderInfo.bytesTotal*100;
			if (stage.loaderInfo.bytesLoaded==stage.loaderInfo.bytesTotal&&preloader.preloader.logo.currentFrame==preloader.preloader.logo.totalFrames){
				removeEventListener(Event.ENTER_FRAME, onFrame);
				removeChild(preloader);
 
				GameInitializer.init();
			}
		}
Здесь я подгружаю с сервака мувиклип-прелоудер который визуализирует процесс загрузки. Просто вот этой вот строчкой
Код AS3:
preloader.count = stage.loaderInfo.bytesLoaded/stage.loaderInfo.bytesTotal*100;
помещаю в него текущий прогресс, а он уже его сам отрисовывает. Данный способ прекрасно работал когда я создавал Flash IDE Project и грузил прелоудер в первый кадр а весь контент был во втором. Сейчас же индикатор загрузки не появляется. Все время висит белый экран а потом прорисовывается весь флеш одним куском. Результат здесь:

http://artgoldau.com/work/casino/crazystarterflash/

Я попробовал вставить скомпиленную флешку в свой обычный html-файл, но тогда флешка вообще не открывается, висит все время белым экраном. Такое ощущение что ФД как-то посмоему компилит и особо встраивает флешку в html. Как тогда в вообще потом верстать страницы с моей флешкой?

Помогите, пожалуйста, разобраться.

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
А это не наблюдали?
Цитата:
ReferenceError: Error #1056: Не удается создать свойство preloader в Preloader.
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at Preloader()[D:\works\Megatel\ENGINES\Slots\Crazy Starter\FLASH\src\Preloader.as:18
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 27.09.2011, 12:58
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 3  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
нет, не наблюдал. я кое с чем разобрался, со всем вылетело из головы, что я создавал не проект с прелоудером а обычный AS3 проект. исправил, теперь у меня класс main и preloader.as. Main совершенно обычный, ни чем не выдающийся:

Код AS3:
 
[Frame(factoryClass="Preloader")]
	public class Main extends MovieClip {
		public static var instance:Main;
 
		public function Main():void {
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			instance = this;
			GameInitializer.init();
		}
 
	}
а вся прорисовка теперь в классе Preloader:

Код AS3:
 
		public function Preloader() {
			if (stage) {
				stage.scaleMode = StageScaleMode.NO_SCALE;
				stage.align = StageAlign.TOP_LEFT;
			}
 
			loader.load(new URLRequest(Settings.host+"Preloader1.swf"));
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPreloaderLoaded);
		}
 
		private function onPreloaderLoaded(e:Event):void {
			preloader = e.currentTarget.content;
			addChild(preloader);
			addEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
		}
 
		private function ioError(e:IOErrorEvent):void {
			trace(e.text);
		}
 
		private function progress(e:ProgressEvent):void {
			preloader.count = stage.loaderInfo.bytesLoaded/stage.loaderInfo.bytesTotal*100;
		}
 
		private function checkFrame(e:Event):void {
			if (currentFrame == totalFrames) {
				stop();
				loadingFinished();
			}
		}
 
		private function loadingFinished():void {
			removeEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);
 
			removeChild(preloader);
 
			startup();
		}
 
		private function startup():void {
			var mainClass:Class = getDefinitionByName("Main") as Class;
			addChild(new mainClass() as DisplayObject);
		}
Но сейчас, почему-то, когда запускаю с компа все ок, а если загрузить с сервака - черный экран и вообще в итоге игра не открывается. Раньше был белый, и хотя-бы одним куском все проирсовывалось - сейчас не прорисовывается вообще.

Старый 27.09.2011, 13:15
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 4  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Создайте текстовое поле, куда выводите служебную информацию для отладки.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 27.09.2011, 13:33
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 5  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
ммм.. круто.. информация показала что начинается только загрузка мувиклпа прелоудера, а дальше ничего не идет. метод onPreloaderLoaded не вызывается почему-то.. с локалки все нормально работает, с сервака не грузится..

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Слишком мало информации. Может у вас там IO_ERROR выскакивает, может еще что. Проверяйте. И поставьте дебажный плеер.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

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

Старый 27.09.2011, 13:50
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 8  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
как это проверить?

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Подписаться на соответствующие события и посмотреть, сработают ли. И поставьте дебажный плеер, многие ошибки сами появятся (в т.ч. и эта)
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
поставил дебаг-плеер и выскочила-таки эта ошибка:

ReferenceError: Error #1056: Не удается создать свойство preloader в Preloader.
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at Preloader()[D:\works\Megatel\ENGINES\Slots\Crazy Starter\FLASH\src\Preloader.as:20]

что же это может значит? причем локально все впорядке.

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

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

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


 


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


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