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

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

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
По умолчанию ProgressEvent

Код AS3:
package  
{
	import flash.display.Sprite;
	import flash.events.ProgressEvent;
	import flash.events.Event;
 
	public class Main extends Sprite 
	{
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh1:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh2:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh3:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh4:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh5:Class;
 
		private var total	:Number = 0;
		private var load	:Number = 0;
 
		public function Main() 
		{
			var spr1:Sprite = new Sprite();
			var spr2:Sprite = new Sprite();
			var spr3:Sprite = new Sprite();
			var spr4:Sprite = new Sprite();
			var spr5:Sprite = new Sprite();
 
			spr1.addChild(new oh1());
			spr2.addChild(new oh2());
			spr3.addChild(new oh3());
			spr4.addChild(new oh4());
			spr5.addChild(new oh5());
 
			addChild(spr1);
			addChild(spr2);
			addChild(spr3);
			addChild(spr4);
			addChild(spr5);
 
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
			loaderInfo.addEventListener(Event.COMPLETE, completeHandler);
			loaderInfo.addEventListener(Event.INIT, initHandler);
		}
 
		private function completeHandler(e:Event):void 
		{
			trace("completeHandler");
 
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		private function enterFrameHandler(e:Event):void 
		{
			if (load >= total)
			{
				trace("complete!");
 
				removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
				return;
			}
		}
 
		private function progressHandler(e:ProgressEvent):void 
		{
			total	= e.bytesTotal;
			load	= e.bytesLoaded;
 
			trace("progressHandler: " + load + " / " + total);
		}
 
		private function initHandler(e:Event):void 
		{
			trace("initHandler");
		}
	}
}
 
/* trace ==>
 *
 * initHandler
 * progressHandler: 1969036 / 1969036
 * completeHandler
 * complete!
 * 
 **/
Вся флэшка весит 20 метров и грузится 10-20 секунд а в трейсе только итог. Или я не втыкаю в суть прелоадеров или лыжи не едут.

Луди, дайте понять, как запустить приложение и увидеть этот процесс загрузки.
Читал мануал про астеройды в шапке форума не понял ни чего, нельзя описать где нить без КАДРОВ и ВРЕМЕННОЙ ШКАЛЫ?
Уже аж раздражает что моя пустая голова не может вразумить элементарного.

Видел флэшки 2-3 метра всё равно прогресс бар пробегает заметно не вооружённым глазом у меня же только после компиляции в трейс отпишет и сразу ролик запускает, и на серв скидывал, всё не так.

Как мне отследить процесс загрузки самого ролика?

Флекс и тот элементарный (пустой) стейдж прогрессирует что тоже заметно. Я даже пробовал создать 30 000 спрайтов 800х600, прогресса ни какого, сам плеер запускается только после того как полностью прогрузится. Ни фига не могу понять!

Заранее, очень буду БЛАГОДАРЕН за помощь!
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!


Последний раз редактировалось iNils; 30.05.2011 в 10:51.
Старый 30.05.2011, 05:42
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Без кадров, к сожалению, не обойтись.
http://etcs.ru/blog/as1/export_in_se...ame_flash_cs3/
__________________
тонкий тролль, осеянный благодатью

Старый 30.05.2011, 05:45
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 3  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Судя по всему мейн из флешДевелопа, так кто же помешал создать проект с прелоаедером? Там уже люди подумали за вас.

И матерился бы поменьше, выхватишь пару плюсов. Звездочки вопроса не решают
Код AS3:
package  
{
	import flash.display.Sprite;
	import flash.events.ProgressEvent;
	import flash.events.Event;
 
        /** 
         * вот эта штука вставляет класс с именем Preloader
         * в кадр который следует перед мейном
         */
        [Frame(factoryClass="Preloader")] 
	public class Main extends Sprite 
	{
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh1:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh2:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh3:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh4:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh5:Class;
 
		private var total	:Number = 0;
		private var load	:Number = 0;
 
		public function Main() 
		{
			var spr1:Sprite = new Sprite();
			var spr2:Sprite = new Sprite();
			var spr3:Sprite = new Sprite();
			var spr4:Sprite = new Sprite();
			var spr5:Sprite = new Sprite();
 
			spr1.addChild(new oh1());
			spr2.addChild(new oh2());
			spr3.addChild(new oh3());
			spr4.addChild(new oh4());
			spr5.addChild(new oh5());
 
			addChild(spr1);
			addChild(spr2);
			addChild(spr3);
			addChild(spr4);
			addChild(spr5);
 
                        //Убираем листенеры отсюда
		}
 
	}
}
А вот собственно и сам прелоадер, Всё вот эти вот прогресс ивенты тут.
Код AS3:
package 
{
	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.MouseEvent;
	import flash.events.ProgressEvent;
	import flash.text.TextField;
	import flash.utils.getDefinitionByName;
 
	/**
	 * ...
	 * @author Dukobpa3
	 */
	public class Preloader extends MovieClip 
	{
 
		private var tf:TextField = new TextField();
 
		private var pourc:int = 0;
 
		public function Preloader() 
		{
			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);
 
			stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
 
			this.addChild(tf);
 
		}
 
		private function onMouseMove(e:MouseEvent):void 
		{
			tf.x = mouseX + 20;
			tf.y = mouseY;
		}
 
		private function ioError(e:IOErrorEvent):void 
		{
			trace(e.text);
		}
 
		private function progress(e:ProgressEvent):void 
		{
			// TODO update loader
 
			pourc = e.bytesLoaded / e.bytesTotal * 100;
 
			tf.text = pourc.toString(10);
		}
 
		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);
 
			startup();
		}
 
		private function startup():void 
		{
			this.removeChild(tf);
 
			//this.stage.addChild(new FlashPreloadProfiler());
 
			var mainClass:Class = getDefinitionByName("MVCMain") as Class;
			addChild(new mainClass() as DisplayObject);
 
		}
 
	}
 
}
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Спасибо народ, извините за звёздочки, просто не мог найти более менее нормального прелоадера. Ещё раз спасибо и за пример и за толкование.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 12.07.2011, 11:09
Heavy вне форума Посмотреть профиль Отправить личное сообщение для Heavy Найти все сообщения от Heavy
  № 5  
Ответить с цитированием
Heavy

Регистрация: Jul 2010
Адрес: Сибирь
Сообщений: 98
Отправить сообщение для Heavy с помощью ICQ
Здравствуйте, у меня аналогичная проблема с пониманием системы работы прелоадера. Возможно потомучто никогда не программировал в кадрах и не пойму как это работает. Пишу также на FD, но пример Dukobpa3 не запустился полноценно что вызвало вопросы:
Во-первых не отобразились загруженные картинки, хотя у курсора отображается "100".
Во-вторых не понятна функция startup (маловато опыта программирования) в которой выдается ошибка "Не определена переменная "MVCMain", для меня загадка что это.
В-третих, хотелось бы уточнить где будет продолжатся сама программа после завершения загрузки, логика подсказывает что в main'е.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Возможно потомучто никогда не программировал в кадрах и не пойму как это работает.
Дело не в программировании в кадрах, а в конструкции swf и в том, как флеш-плеер с ним работает.
Цитата:
Во-вторых не понятна функция startup (маловато опыта программирования) в которой выдается ошибка "Не определена переменная "MVCMain", для меня загадка что это.
Вместо "MVCMain" вы должны прописать имя класса вашего "main'e".
Цитата:
В-третих, хотелось бы уточнить где будет продолжатся сама программа после завершения загрузки, логика подсказывает что в main'е.
Там и продолжится.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 12.07.2011, 12:34
Heavy вне форума Посмотреть профиль Отправить личное сообщение для Heavy Найти все сообщения от Heavy
  № 7  
Ответить с цитированием
Heavy

Регистрация: Jul 2010
Адрес: Сибирь
Сообщений: 98
Отправить сообщение для Heavy с помощью ICQ
А если походу программы нужно будет вызвать еще один прелоадер, как это нужно обозначать в Main, и нужно ли писать еще один класс дляпрелоадера или можно какимто образом воспользоваться тем же самым.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Тем же самым не получится. Но вы кажется путаете понятия прелоадера и прогрессбара.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 12.07.2011, 12:53
Heavy вне форума Посмотреть профиль Отправить личное сообщение для Heavy Найти все сообщения от Heavy
  № 9  
Ответить с цитированием
Heavy

Регистрация: Jul 2010
Адрес: Сибирь
Сообщений: 98
Отправить сообщение для Heavy с помощью ICQ
Судя по всему действительно путаю, и тогда не помайму, в чем смысл и плюс прелоадера, если в основном классе можно сделать прогрессбар, хотя у топикстартера это не получилось.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Прелоадер загружается и выполняется первым, до того как загружены все ресурсы. В основном классе вы можете сделать прогрессбар, но код его выполнится только после того, как загрузится вся флешка и показывать будет уже нечего.
__________________
משיח לא בא
משיח גם לא מטלפן

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

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

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


 


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


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