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

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

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

Регистрация: Feb 2015
Сообщений: 63
По умолчанию Прелоадер кода в классах

Приветствую! Перечитал кучу тем по части создания такого прелоадера, но нужной информации не нашел (да, читал и темы с этого форума, в которые вы можете перенаправить). История такова, что осваивая FD пришел к решению подгрузить вот такую строчку перед классом прелоадера: [Frame(factoryClass="src.Preloader")] и мой драгоценный класс Main наконец то заработает. Тестирую на сервере через сеть, закидывая скомпилированное туда, но прелоадер не появляется. Трейсы из него не видны.

src.Main

Код AS3:
package src 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.display.Sprite;
        import flash.display.DisplayObject;
 
 
    [SWF(width="600", height="500", backgroundColor="#1a1a1a")] //кажется строку эту не видит
    [Frame(factoryClass="src.Preloader")]// эту строчку игнорирует
 
 
	public class Main extends Sprite
	{
 
		public function Main() 
 
 
		{ 
 
 
		 if (stage) init(); 
       else addEventListener(Event.ADDED_TO_STAGE, init);
 
 
 
 
 
		}//fun Main
 
		public function init(e:Event = null):void
	  {
 
	     removeEventListener(Event.ADDED_TO_STAGE, init);
 
 
	здесь начинается загрузка вторичных классов addChild(...);
 
 
                 }
src.Preloader

Код AS3:
package src
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.utils.getDefinitionByName;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize; 
    import flash.display.LoaderInfo;
 
	public class Preloader extends MovieClip 
	{
 
     private var preloader_text:TextField;
     private var swf_w:int=600;
     private var swf_h:int=500;
 
		public function Preloader() 
		{
                     trace("Oh mein Gott!");//чуда не произошло
 
			if (stage) {
				stage.scaleMode = StageScaleMode.NO_SCALE;
				stage.align = StageAlign.TOP_LEFT;
			}
			addEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
 
			// Прелоадер - визуальная часть
            preloader_text=new TextField();
            preloader_text.text="Load 0 % ";
            preloader_text.textColor=0xA0A0A0;
            preloader_text.selectable=false;
            preloader_text.autoSize=TextFieldAutoSize.CENTER;
            preloader_text.x=swf_w/2-preloader_text.width/2;
            preloader_text.y=swf_h/2;
            addChild(preloader_text);
		}
 
		private function ioError(e:IOErrorEvent):void 
		{
			trace(e.text);
		}
 
		private function progress(e:ProgressEvent):void 
		{
			// Update loader
			preloader_text.text="Load "+(Math.round((loaderInfo.bytesLoaded*100)/loaderInfo.bytesTotal))+" %";
		}
 
		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);
 
			// Спрятать прелоадер
			preloader_text.visible=false;
 
			startup();
		}
 
		private function startup():void 
		{
			var mainClass:Class = getDefinitionByName("Main") as Class;// пробовал с "src.Main" но не пошло тоже
			if (parent == stage) stage.addChildAt(new mainClass() as DisplayObject, 0);
			else addChildAt(new mainClass() as DisplayObject, 0);
		}
 
	}
 
}
В настройках компилятора Project -> Properties -> Compiler Options -> Additional Compiler Options пробовал дописывать: -frame two Main , но результат отрицательный.

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

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

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


 


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


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