トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     外部SWFに埋め込んだ画像をロードするには
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
ochibo
Åê¹ÆNo.40471
投稿日時: 2008-10-9 13:28
新米
居住地: Kyoto
投稿: 5
使用環境:
外部SWFに埋め込んだ画像をロードするには
はじめまして。AS3を勉強中のochiaiです。

main.swf から大量の画像をもつ image.swf 内の画像をロードしたいのですが、
なかなか上手くいきません。
Flex Builder 3.0 (AS3)を使っています。

image.swf に埋め込み画像をもつクラス CImages をつくり、
main.swf でswfをロードしてクラス内の関数にアクセスする
ことで画像を読み込もうと思っています。

main.swf内 外部SWFをロードするクラス

package util
{
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.errors.IllegalOperationError;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.net.URLRequest;
	import flash.system.ApplicationDomain;
	import flash.system.LoaderContext;

	public class CExtObjLoader extends EventDispatcher
	{
		public function CExtObjLoader(){}
		public function Load( swfPath:String ):void
		{
			m_urlReq = new URLRequest( swfPath );
			m_loader = new Loader();

			var loaderInfo:LoaderInfo = m_loader.contentLoaderInfo;
			loaderInfo.addEventListener( Event.COMPLETE, H_EveLoadComp );
			loaderInfo.addEventListener( IOErrorEvent.IO_ERROR, H_EveIO_Error );

			var context:LoaderContext = new LoaderContext();
			context.applicationDomain = ApplicationDomain.currentDomain;
			m_loader.load( m_urlReq, context );
		}

		public function GetObj( name:String ) : Object
		{
			try {
				return m_loader.contentLoaderInfo.applicationDomain.getDefinition( name );
			}
			catch( error:Error ) {
				throw new IllegalOperationError( "[CExtObjLoader.GetObj()] " + name + " not found" );
			}
			return null;
		}

		public function H_EveLoadComp( eve:Event ):void { dispatchEvent( new Event( CExtObjLoader.EVE_LOADED ) ); }
		public function H_EveIO_Error( eve:Event ):void { dispatchEvent( new Event( CExtObjLoader.EVE_IO_ERROR ) ); }

		public static const EVE_LOADED:String = "loaded";
		public static const EVE_IO_ERROR:String = "IO_Error";
		private var m_loader:Loader;
		private var m_urlReq:URLRequest;
	}
}



main.swf内 image.swfの画像を使いたいクラスの一部

private var m_pObjLoader:CExtObjLoader;

private function Init():void {
	m_pObjLoader = new CExtObjLoader();
	m_pObjLoader.addEventListener( CExtObjLoader.EVE_LOADED, InitDataBase );
	m_pObjLoader.Load( "image.swf" );
}
private function InitDataBase(eve:Event):void {
	var extClass:Class = m_pObjLoader.GetObj( "CImages" ) as Class;
	var extClassRef:Object = new extClass();

	var imageClass:Class = extClassRef.GetFaceImage000();
	m_recievedFace = new imageClass as Bitmap;
}



image.swf のmxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
	<![CDATA[
	private var m_image:CImages = new CImages();
	]]>
</mx:Script>
</mx:Application>


image.swf のCImages.as

package
{
	public class CImages
	{
		public function CImages(){}
		public function GetFaceImage000():Class
 		{ return m_faceImage_000; }
		public function GetFaceImage001():Class
 		{ return m_faceImage_001; }

		[Embed( source="face_000.gif" )]
		private var m_faceImage_000:Class;
		[Embed( source="face_001.gif" )]
		private var m_faceImage_001:Class;
	}
}


ロード完了のイベントは実行されますが、CExtObjLoader の GetObj関数でCImagesクラスの取得に失敗してしまいます。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » 外部SWFに埋め込んだ画像をロードするには ochibo 2008-10-9 13:28
     Re: 外部SWFに埋め込んだ画像をロードするには ochibo 2008-10-10 14:12
       Re: 外部SWFに埋め込んだ画像をロードするには 961832p 2008-10-11 2:03
         Re: 外部SWFに埋め込んだ画像をロードするには ochibo 2008-10-15 15:12
           Re: 外部SWFに埋め込んだ画像をロードするには ochibo 2008-10-17 12:04

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops