In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: 2009-3-14 wonderfl に任意の画像を埋め込む

Base64 化された画像を wonderfl に埋め込むサンプル

Base64 化すると、画像データは SWF に埋め込まれるので、
Loader を使って外部サーバから画像を読み込むことなく
wonderfl に画像データ (JPG, PNG, GIF, SWF) を
埋め込むことができます。

- 2009-3-14 選んだファイルを Base64 エンコードする
http://wonderfl.kayac.com/code/7759319c71a3b018008d108bfd08425cd72a5c77

- PHP で ファイルを Base64 化するコードの例
http://hikipuro.blog105.fc2.com/blog-entry-249.html

写真素材は、LittleHut さんからお借りしました。 
http://littlehut.fem.jp/
// forked from hikipuro's 2009-3-14 wonderfl に任意の画像を埋め込む
package 
{
    import flash.display.Bitmap;
    import flash.display.DisplayObjectContainer;
    import flash.display.Sprite;
    import flash.events.Event;
    
    /**
     * Base64 化された画像を wonderfl に埋め込むサンプル
     *
     * Base64 化すると、画像データは SWF に埋め込まれるので、
     * Loader を使って外部サーバから画像を読み込むことなく
     * wonderfl に画像データ (JPG, PNG, GIF, SWF) を
     * 埋め込むことができます。
     *
     * - 2009-3-14 選んだファイルを Base64 エンコードする
     * http://wonderfl.kayac.com/code/7759319c71a3b018008d108bfd08425cd72a5c77
     *
     *
     * - PHP で ファイルを Base64 化するコードの例
     * http://hikipuro.blog105.fc2.com/blog-entry-249.html
     *
     * 
     * 写真素材は、LittleHut さんからお借りしました。 
     * http://littlehut.fem.jp/
     */
        [ SWF( width = "320" , height = "240" , backgroundColor = "0xFFFFFF" , frameRate = "60" ) ]
    public class Main extends Sprite 
    {
        // 画像データ
        private const data:String = "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"

        /**
         * コンストラクタ
         */
        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        /**
         * 初期化メソッド
         * @param    e
         */
        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            
            var display:DisplayObjectContainer;
            display = Base64ImageLoader.load(data);
            if (display != null)
                addChild(display);
        }
    }
    
}

/**
 * Base64化された画像データを表示可能な形式に変換するクラス
 * 
 * 使い方 :
 * var data:String = "Base64化された画像データ";
 * var display:DisplayObjectContainer = Base64ImageLoader.load(data);
 * if (display != null)
 *     addChild(display);
 */
class Base64ImageLoader
{
    import flash.display.DisplayObjectContainer;
    import flash.display.Loader;
    import flash.utils.ByteArray;
    import mx.utils.Base64Decoder;

    static public function load(data:String):DisplayObjectContainer
    {
        var byteArray:ByteArray;
        var base64Decoder:Base64Decoder;
        var loader:Loader;
        
        base64Decoder = new Base64Decoder();
        base64Decoder.decode(data);
        
        try {
            byteArray = base64Decoder.toByteArray();
            byteArray.position = 0;
        } catch (e:Error) {
            return null;
        }
        
        loader = new Loader();
        loader.loadBytes(byteArray);
        
        return loader;
    }
}