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: Function.applyの使い方

こういうことでいいのかな
こんな感じです.こういうとき wonderfl 便利>< by flair4.jp
/**
 * Copyright kawakita ( http://wonderfl.net/user/kawakita )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/huoP
 */

// forked from ton's Function.applyの使い方
// こういうことでいいのかな
// こんな感じです.こういうとき wonderfl 便利>< by flair4.jp
package {
    
    import flash.display.*;
    import flash.text.TextField;
    
    public class FlashTest extends Sprite {
        
        public function FlashTest() {
            var txt:TextField = new TextField();
            txt.autoSize = "left";
            addChild(txt);
            
            /////////////////////////////
            // 第1引数の使い方
            // Function 内の this がどこを指すかを指定できます.
            /////////////////////////////
            
            // apply されちゃう人たち.
            var obj1:Object = {
                say : "俺obj1!",
                func : function():void{
                    txt.appendText("obj1のfuncへようこそ\n");
                }
            }
            var obj2:Object = {
                say : "俺obj2!",
                func : function():void{
                    txt.appendText("obj2のfuncへようこそ\n");
                }
            }
            var obj3:Object = {
                say : "俺obj3!",
                func : function():void{
                    txt.appendText("obj3のfuncへようこそ\n");
                }
            }
                              
            var sprite:Sprite = new Sprite();
            var mc:MovieClip = new MovieClip();
            
            // obj1 2 3 の func を実行.
            
            // obj1 の func を実行.
            obj1.func();
            
            // obj2 の func を実行.
            obj2.func();
            
            // obj3 の func を実行.
            obj3.func();
            
            txt.appendText("------------------------\n");
            
            // -----------------------
            
            // 区別のため以後この func は 俺func と呼びます.
            var func:Function = function():void{
               // apply の第一引数で this の読み先が変わる.
               txt.appendText(this.say+"\n");
               this.func();
               txt.appendText("------------------------\n");
            }
            
            // 俺func を実行. その際, this は obj1 を参照させる.
            func.apply(obj1);
            
            // 俺func を実行. その際, this は obj2 を参照させる.
            func.apply(obj2);
            
            // 俺func を実行. その際, this は obj3 を参照させる.
            func.apply(obj3);
            
            // -----------------------
            
            // なにも指定しないと・・・
            func();
            
        }
        
    }
}