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

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

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

Регистрация: Sep 2011
Сообщений: 3
По умолчанию Доступ к свойствам и методам из отладочной флешки

Привет всем. Помогите решить такую задачу. Есть три флешки: preloader.swf, loader.swf, hello.swf.
Loader.swf подгружает главный и единственный класс из hello.swf. Как из отладочной флешки preloader.swf получить доступ к свойствам и методам двух других флешок?

Пробовал вместо этого кода
Код AS3:
Hello = loaderInfo.applicationDomain.getDefinition('Hello') as Class;
LoaderHello = loaderInfo.applicationDomain.getDefinition('LoaderHello') as Class;
такой способ
Код AS3:
Hello = getDefinitionByName('Hello') as Class;
LoaderHello = getDefinitionByName('LoaderHello') as Class;
ничего не получается.

В flashlog.txt пишутся сообщения об ошибках:
Код:
<Error> Error #1065: Переменная Hello не определена.
<Error> Error #1065: Переменная LoaderHello не определена.
Ok loaded: file://localhost/C:/Documents and Settings/Admin/%D0%9C%D0%BE%D0%B8 %D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B/Hello/Hello.swf
Предупреждение: SWF-файл ActionScript 1.0/2.0 загрузил SWF-файл ActionScript 3.0; код в SWF-файле ActionScript 3.0 выполняться не будет.
Предупреждение: SWF-файл ActionScript 1.0/2.0 загрузил SWF-файл ActionScript 3.0; код в SWF-файле ActionScript 3.0 выполняться не будет.
Ниже привожу их исходный код

Hello.swf
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.*;
 
	public class Hello extends Sprite 
	{
		public const stroka:String = "HELLO";
 
		public function Hello():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			//helloworld();
		}
		private var txt:TextField;
		public function helloworld():void {
			var format:TextFormat = new TextFormat();
			format.size = 37;
			txt = new TextField();
			txt.y = 180;
			txt.text="Hello world!!!"
			txt.setTextFormat(format);
			txt.autoSize = TextFieldAutoSize.LEFT;
			addChild(txt);
		}
	}
}
Loader.swf
Код AS3:
package {
 import flash.display.Sprite;
 import flash.display.Loader; 
 import flash.display.LoaderInfo;
 import flash.net.URLRequest; 
 import flash.events.*; 
 
 public class LoaderHello extends Sprite {
 
	 public const text:String = "WORLD";
 
 public function LoaderHello() {
 
 var loader:Loader = new Loader();
 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
 loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
 loader.load(new URLRequest("Hello.swf"));
 }
 
 private function completeHandler(event:Event):void {
 
 var info:LoaderInfo = event.target as LoaderInfo;
 trace("Ok loaded: " + info.url);
 try {
 var a:Class = info.applicationDomain.getDefinition("Hello") as Class;
 addChild( new a() );
 } catch (e:ReferenceError) {
 trace('ERROR: '+e);
 }
 }
 
 private function ioErrorHandler(event:IOErrorEvent):void {
 trace("ERROR: " + event);
 }
 }
 }
Preloader.swf
Код AS3:
package
{
 
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.Event;
	import flash.utils.*;
	import flash.display.DisplayObject;
 
	public class Preloader extends Sprite
	{
		//Ссылка на самих себя
		protected static var self:Sprite;
		//Ссылка на объект который будет загружен в профайлер
		protected static var targetSprite:Sprite;
		//Ссылка на объект stage загруженного объекта
		protected static var targetStage:Stage;
 
		public function Preloader():void
		{
			if (stage) initHandler(null);
			else addEventListener(Event.ADDED_TO_STAGE,this.initHandler);
		}
 
		private function initHandler(event:Event):void
		{
			if (hasEventListener(Event.ADDED_TO_STAGE)) removeEventListener(Event.ADDED_TO_STAGE,initHandler);
 
			self = this;
			root.addEventListener("allComplete",allCompleteHandler);
		}
 
		private function allCompleteHandler(event:Event):void
		{
			var loaderInfo:LoaderInfo;
 
			try
			{
				loaderInfo = LoaderInfo(event.target);
 
				if (loaderInfo.content.root.stage == null) return;
 
				//Извлекаем ссылку на загруженный объект
				targetSprite = loaderInfo.content.root as Sprite;
				targetStage = targetSprite.stage;
				targetStage.frameRate = 30;
 
				beginHarassment();
			}
			catch(e:Error)
			{
			trace("<Error> " + e.message);	 
			}
		}
 
		private var Hello:Class;
                      private var LoaderHello:Class;
		private function beginHarassment():void {
			try {
				targetSprite = loaderInfo.content.root as Sprite;
 
				Hello = loaderInfo.applicationDomain.getDefinition('Hello') as Class;
                                             LoaderHello = loaderInfo.applicationDomain.getDefinition('LoaderHello') as Class;
 
				var stringHello:Object = new Hello();
 
				var stringLoaderHello:Object = new LoaderHello();
				stringHello.helloworld();
				trace("TEXT"+stringHello.stroka);
                                             trace("STROKA"+stringLoaderHello.text);
 
			}
			catch (e:Error) {
				var self:Preloader = this;
				trace("<Error> " + e.message);
                                             setTimeout(function():void { self.beginHarassment(); }, 1000);
			}
		}
	}
}

Старый 09.09.2011, 17:47
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 2  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
Переменная Hello не определена.
Код AS3:
var Hello:Class = ...
Цитата:
Предупреждение: SWF-файл ActionScript 1.0/2.0 загрузил SWF-файл ActionScript 3.0; код в SWF-файле ActionScript 3.0 выполняться не будет.
Сделайте все swf-ки на AS3

Старый 09.09.2011, 18:57
djserge вне форума Посмотреть профиль Отправить личное сообщение для djserge Найти все сообщения от djserge
  № 3  
Ответить с цитированием
djserge

Регистрация: Sep 2011
Сообщений: 3
Сделал заново все проекты в AS3, скомпилировал, в flashlog.txt опять ошибки:

Код:
Предупреждение: SWF-файл ActionScript 1.0/2.0 загрузил SWF-файл ActionScript 3.0; код в SWF-файле ActionScript 3.0 выполняться не будет.
Предупреждение: SWF-файл ActionScript 1.0/2.0 загрузил SWF-файл ActionScript 3.0; код в SWF-файле ActionScript 3.0 выполняться не будет.

Старый 09.09.2011, 19:53
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 4  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Увы, значит скомпилировали не все SWF в AS3. Чудес не бывает.

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

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

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


 


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


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