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

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

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

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
По умолчанию [mxmlc][Flex SDK] Добавить стандартный прелоадер

Здравствуйте!


Есть у меня AS3 приложение с главным файлом Main.as, которое я компилирую с помощью команды "mxmlc Main.as". Мне нужно добавить хоть какой-нибудь прелоадер.

Вот здесь написано, что вроде как достаточно сделать mxml файл, в котором нужно прописать:

Код AS3:
<s:Application ... preloader="mx.preloaders.DownloadProgressBar">
и у приложения появится какой-то стандартный прелоадер.

В том же каталоге, где лежит файл Main.as, я сделал файл application.mxml со следующим содержимым:

Код AS3:
<?xml version="1.0"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark"
    preloader="mx.preloaders.DownloadProgressBar"
    usePreloader="true">
    <mx:Script source="Main.as"/>
</s:Application>
Но при компиляции командой "mxmlc application.mxml" выдается ошибка:

Цитата:
Ошибка: Не удалось использовать <mx:Script> для реализации компонента.
<mx:Script source="Main.as"/>
Как ее побороть, так и не понял.

Вот здесь говорят, что нужно подключать пространство xmlns:mx="library://ns.adobe.com/flex/mx" - так оно у меня подключено.

Еще обнаружил, что если вместо Main.as указать несуществующий файл - будет такая же ошибка.

Что я делаю неправильно? Как простейшим образом добавить к AS3 приложению хоть какой-нибудь прелоадер?
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru

Старый 05.10.2010, 13:34
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
FlashDevelop не пробовали? Там есть стандартный проект "AS3 Project with Preloader".
За вами останется только графика.

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Цитата:
Сообщение от i.o. Посмотреть сообщение
FlashDevelop не пробовали? Там есть стандартный проект "AS3 Project with Preloader".
За вами останется только графика.
Linux гораздо интереснее и занятнее.

Старый 05.10.2010, 14:26
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 4  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
> Linux гораздо интереснее и занятнее.

То есть, специалитов тут нет, и по вопросу ответить никто не может?
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Цитата:
Сообщение от xintrea Посмотреть сообщение
> Linux гораздо интереснее и занятнее.

То есть, специалитов тут нет, и по вопросу ответить никто не может?
Не надо быть специализдтом, чтобы написать прелоадер.
Код 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.utils.getDefinitionByName;
 
	public class Preloader extends MovieClip 
	{
 
		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);
 
			// TODO show loader
		}
 
		private function ioError(e:IOErrorEvent):void 
		{
			trace(e.text);
		}
 
		private function progress(e:ProgressEvent):void 
		{
			// TODO update loader
		}
 
		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);
 
			// TODO hide loader
 
			startup();
		}
 
		private function startup():void 
		{
			var mainClass:Class = getDefinitionByName("Main") as Class;
			if (parent == stage) stage.addChildAt(new mainClass() as DisplayObject, 0);
			else addChildAt(new mainClass() as DisplayObject, 0);
		}
 
	}
 
}
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	[Frame(factoryClass="Preloader")]
	public class Main extends Sprite 
	{
 
		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);
			// entry point
		}
 
	}
 
}

Старый 05.10.2010, 15:24
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 6  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
> Не надо быть специализдтом, чтобы написать прелоадер.

Этот прелоадер ничего не показывает.

По вопросу стандартного прелоадера добился следующего. Код application.mxml сделал таким:

Код AS3:
<?xml version="1.0"?> 
<mx:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    preloader="mx.preloaders.DownloadProgressBar"
    usePreloader="true">
    <fx:Script source="Main.as"/>
</mx:Application>
При компиляции *.as файл теперь подхватывается. Но вылазит такая ошибка:

Цитата:
Main.as(7): Ошибка: Пакеты не могут быть вложенными.
import flash.events.MouseEvent;
Совершенно непонятно, почему компиляция командой "mxmlc Main.as" идет, а если компилировать через подключение к *.mxml, вылазит такая ошибка. Начало файла Main.as:

Код AS3:
package {
 
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.display.DisplayObject;
    import flash.display.SimpleButton;
    import flash.events.MouseEvent;
    import flash.events.Event;
 
    import PushButton;
 
    public class Main extends Sprite 
    {
...
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru

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

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Код AS3:
// TODO show loader
Как бы намекает, что сюда надо самому написать появление графики прелоадера на сцене,

а вот это
Код AS3:
// TODO update loader
самому написать изменение состояния этого самого прелоадера ( изменение циферок + прогресс бар).

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
По вопросу стандартного прелоадера добился следующего.
Нет такого понятия как "стандартный прелоадер", как и самих стандартов. То, что вы пытаетесь использовать работает в флекс проектах и именно о таком случае говорится в хелпе по вашей ссылке.

Код AS3:
<fx:Script source="Main.as"/>
В source тега Script нельзя вставить код класса, о чем завуалированно говорится в тексте ошибки. По-сути вы пытаетесь дописать код класса Main в класс Application.

P.S. Не морочьте себе голову и воспользуйтесь кодом, который привел Bgg.

Как-то так будет работать (это только направление куда копать, код не проверял):
Код AS3:
<?xml version="1.0"?> 
<mx:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    preloader="mx.preloaders.DownloadProgressBar"
    usePreloader="true">
    <mx:UIComponent width="100%" height="100%">
         <Main/>
    </mx:UIComponent>
</mx:Application>
Но тут возникает вопрос, а стоит ли тащить за собой половину флек-фреймворка ради прелоадера.

Старый 05.10.2010, 20:39
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 9  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
Всё, всем спасибо. Сделал простейший прелоадер на базе кода что дал Bgg.

Результирующая флешка: http://www.multikov.net/animation.ph...000&data4=1072.

За сим, забываю про Flex/Flash как про страшный сон.
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru

Старый 05.10.2010, 20:53
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 10  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
Вот, обсуждалось.
Цитата:
Сообщение от Bgg Посмотреть сообщение
Linux гораздо интереснее и занятнее.
А при чем тут Linux? Или я юмора не понял?

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

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

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


 


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


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