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

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

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

Регистрация: Jan 2013
Сообщений: 1
По умолчанию Flash прелоадер

Я новичок во Флэш, мне на сайт нужно сделать прелоадер для SWF файлов.

Как я понимаю, структура обычного Flash прелоадера такова: получает ссылку на SWF файл, качает его, параллельно выводит информацию о статусе загрузки, затем отображает содержимое.

В интернете нашел много уроков по созданию прелоадеров, но ни в одном не сказано, как подгрузить нужный файл, и как затем его отобразить.
Может кто подскажет, как это сделать или поделится ссылкой на исходники готового прелоадера ?

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

Регистрация: Jan 2013
Сообщений: 126
Прелоадеры бывают внешние и внутренние. Если основная флешка тяжелая, лучше воспользоваться внешней.
Даже не знаю что тебе посоветовать, в сети столько примеров, готовые классы есть.

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

Регистрация: Dec 2006
Сообщений: 1,764
можно вот так:

Код AS3:
var g:Loader = new Loader();
g.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
g.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
g.load(new URLRequest("грузим_нашу_прелесть.swf"));
 
function loop(e:ProgressEvent):void
{
  var perc:Number = e.bytesLoaded / e.bytesTotal;
  percent.text = Math.ceil(perc*100).toString();
}
 
function done(e:Event):void
{
  removeChild(percent);
  percent = null;
  addChild(l);
}
__________________
а за окном атлантический океан!

Старый 16.01.2013, 20:21
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 4  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Цитата:
Сообщение от namespaces Посмотреть сообщение
Прелоадеры бывают внешние и внутренние. Если основная флешка тяжелая, лучше воспользоваться внешней.
Даже не знаю что тебе посоветовать, в сети столько примеров, готовые классы есть.
Внешний или внутренний, определяется поставленной задачей, а не размером флешки.

Вот FDшный:
Код 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.ProgressEvent;
	import flash.text.TextField;
	import flash.utils.getDefinitionByName;
 
	public class Preloader extends MovieClip
	{
		private var _progressField:TextField;
 
		public function Preloader()
		{
			if (stage)
			{
				stage.scaleMode = StageScaleMode.NO_SCALE;
				stage.align = StageAlign.TOP_LEFT;
				//stage.showDefaultContextMenu = false;
 
				_progressField = new TextField();
				_progressField.width = 40;
				_progressField.height = 40;
				_progressField.x = stage.stageWidth / 2 - 20;
				_progressField.y = stage.stageHeight / 2 - 20;
				addChild(_progressField);
			}
			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
		{
			_progressField.text = Math.floor(100 / e.bytesTotal * e.bytesLoaded) + "%";
		}
 
		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(_progressField);
			_progressField = null;
 
			startup();
		}
 
		private function startup():void
		{
			var mainClass:Class = getDefinitionByName("Main") as Class;
			addChild(new mainClass() as DisplayObject);
		}
 
	}
 
}
Код AS3:
	[Frame(factoryClass="Preloader")]
	public class Main extends Sprite {

Старый 16.01.2013, 20:30
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 5  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
вот готовый внешний, самый подходящий для данного случая:
Код AS3:
package {
 
	import flash.display.*;
	import flash.events.*;
	import flash.net.URLRequest;
	import flash.text.*;
 
	public class SlimLoader extends Sprite{
		private var loader:Loader;
		private var progressOutput:TextField;
 
		public function SlimLoader(){
			createLoader();
			createProgressIndicator();
			//"http://../*.swf"
			load(new URLRequest("*.swf"));
		}
		private function createLoader():void{
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener);
			loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
		}
		private function createProgressIndicator():void{
			progressOutput = new TextField();
			progressOutput.autoSize = TextFieldAutoSize.LEFT;
			progressOutput.background = true;
			progressOutput.border = true;
			progressOutput.x = 200;
			progressOutput.y = 150;
			progressOutput.selectable = false;
			progressOutput.text = "LOADING...";
		}
		private function load (urlRequest:URLRequest):void{
			loader.load(urlRequest);
			if(!contains(progressOutput)){
				addChild(progressOutput);
			}
		}
		private function progressListener(e:ProgressEvent):void{
			progressOutput.text = "LOADING: " + Math.floor(e.bytesLoaded / 1027) + "/" + Math.floor(e.bytesTotal / 1027) + "kB";
		}
		private function initListener(e:Event):void{
 
		}
		private function completeListener(e:Event):void{
			removeChild(progressOutput);
			stage.addChild(loader.content);
		}
	}
}

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

Регистрация: Jan 2013
Сообщений: 126
Сейчас будем соревноваться у кого какой прелоадер?
Цитата:
В интернете нашел много уроков по созданию прелоадеров, но ни в одном не сказано, как подгрузить нужный файл, и как затем его отобразить.
Вы хоть объясните куда будет вставляться подгружаемый файл. Копи-пастить я тоже могу.

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

Регистрация: Dec 2006
Сообщений: 1,764
с понятием классы знаком? а подгружаемый файл можешь подгружать откуда тебе лучше
__________________
а за окном атлантический океан!

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

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

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


 


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


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