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

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

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

Регистрация: May 2008
Сообщений: 52
По умолчанию Embed SWF-ки и обращение к её методам

Приветствую.
Имеется Flash AS3 SWF файлик(1) имплементирующий некий интерфейс ICalc.
Из флекса(2), компонентом SWFLoader я подгружаю этот файлик(1), затем через интерфейс обращаюсь к методам SWFки(1). Всё работает.
Код:
var myInstance:ICalc = swfLoader.content as ICalc;
myInstance.anyFunction(var1, var2);
Но стоит заEMBEDить SWF-ку myInstance становится Null (myInstance инициализирую после отображения на сцене SWFки(1)), и обратиться к методам уже не получается.

Пробовал Embedить через Bindable объект с последующим указанием source:
Код:
[Bindable]
[Embed('flashContainer.swf')]
private static var FLASH_CONTAINER:Class;
...
swfLoader.source=FLASH_CONTAINER;
Подскажите как решить мою проблему. Мне необходим 1 конечный swf файл содержащий в себе всё необходимое.

Старый 29.07.2008, 18:39
Venya2007 вне форума Посмотреть профиль Отправить личное сообщение для Venya2007 Найти все сообщения от Venya2007
  № 2  
Ответить с цитированием
Venya2007
[+4 16.07.08]

Регистрация: Jul 2008
Адрес: Gamburg
Сообщений: 108
Код:
package
{
	import flash.display.*;
	import flash.events.Event;
	import flash.utils.ByteArray;
	
	public class ObjectSWF extends Sprite{
		
		private var loader:Loader;
		private var byte:ByteArray;
		private var thisObj:MovieClip;
		private var _scale:Number;
	
		public function ObjectSWF(Obj:Class,scale:Number=1){
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadBytes);
			byte = new Obj() as ByteArray;
			loader.loadBytes(byte);	
			_scale= scale;
		}
	//-------------------------------------------------------------------------------------
		private function onLoadBytes(evt:Event):void{			
			this.thisObj = loader.content as MovieClip;
			this.gotoFrameStop(1)
			
			this.thisObj.scaleX= _scale;
			this.thisObj.scaleY= _scale;
			this.thisObj.x=-Math.round(this.thisObj.width/2);
			this.thisObj.y=-Math.round(this.thisObj.height/2);
			addChild(this.thisObj);
		}	
	//-----------------------------------------------------------------------------------------
	    public function gotoFrameStop(num:uint):void{
	    	 this.thisObj.gotoAndStop(num)
	    }
	//-------------------------------------------------------------------------------------------
		public function gotoFramePlay(num:uint):void{
			this.thisObj.gotoAndPlay(num);
		}
	//-------------------------------------------------------------------------------------------	
		public function nextFrame():void{
			this.thisObj.nextFrame();
		}
	//------------------------------------------------------------------------------------------	
		public function prevFrame():void{
			this.thisObj.prevFrame();
		}
	//-----------------------------------------------------------------------------------------
		public function RemoveObjectSWF():void{
			removeChild(this.thisObj);
		}	
	}
}
Далее
Код:
....
[Embed('flashContainer.swf')]
private static var FLASH_CONTAINER:Class;
var n_swf:ObjectSWF= new ObjectSWF(FLASH_CONTAINER)

Старый 30.07.2008, 08:49
Aldvin вне форума Посмотреть профиль Отправить личное сообщение для Aldvin Найти все сообщения от Aldvin
  № 3  
Ответить с цитированием
Aldvin

Регистрация: May 2008
Сообщений: 52
Спасибо за вариант, но ситуация аналогичная. В классе ObjectSWF при присвоении переменная byte, оказывается Null, хотя Obj() не пустой.
Код:
byte = new Obj() as ByteArray;
loader.loadBytes(byte);

Пробовал также грузить другой SWF файлик - не помогает.
Подскажите пожалуста у кого ещё есть идеи.

Старый 30.07.2008, 11:28
Venya2007 вне форума Посмотреть профиль Отправить личное сообщение для Venya2007 Найти все сообщения от Venya2007
  № 4  
Ответить с цитированием
Venya2007
[+4 16.07.08]

Регистрация: Jul 2008
Адрес: Gamburg
Сообщений: 108
Проверте правильность пути и название флешки

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

Регистрация: May 2008
Сообщений: 52
Флешка Embedится - 100%. Лежит рядом так что ошибок с путём быть не может.
Проблема осталась не решенной, пришлось её обойти и реализовать структуру программы иным способом.
Venya2007, спасибо за участие и за помощь!

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

Регистрация: Apr 2007
Сообщений: 1,369
http://yarovoy.com/2007/10/27/embed_binary_data/ - может поможет.
__________________
john

Старый 03.08.2008, 21:51
Venya2007 вне форума Посмотреть профиль Отправить личное сообщение для Venya2007 Найти все сообщения от Venya2007
  № 7  
Ответить с цитированием
Venya2007
[+4 16.07.08]

Регистрация: Jul 2008
Адрес: Gamburg
Сообщений: 108
Aldvin Molecula правильно подсказал:попробуйте - 100 % будет работать!

Код:
[Embed('flashContainer.swf',mimeType="application/octet-stream")]
private var FLASH_CONTAINER:Class;
var n_swf:ObjectSWF= new ObjectSWF(FLASH_CONTAINER)


Последний раз редактировалось Venya2007; 03.08.2008 в 21:54.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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