MovieClip 参照てすと

by ic_yas
♥0 | Line 204 | Modified 2012-08-17 10:54:54 | MIT License
play

ActionScript3 source code

/**
 * Copyright ic_yas ( http://wonderfl.net/user/ic_yas )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/r3df
 */

// forked from Saqoosha's Pixels

package {
    import flash.ui.Keyboard;
    import flash.display.*;
    import flash.events.*;
    import net.hires.debug.Stats;
    import org.libspark.betweenas3.BetweenAS3;
    import org.libspark.betweenas3.tweens.ITween;
    import org.libspark.betweenas3.easing.*;
    
    [SWF(backgroundColor="#000000", frameRate="60", width="475", height="475")]
    public class Main extends Sprite {
        private var _stats:Stats;
        private var _statsLayer:Sprite;
        private var _mainLayer:Sprite;
        private var _traceLayer:Sprite;
        private var iw:InstanceWatcher;
        
        public function Main() {
            _stats = new Stats();
            _statsLayer = new Sprite();
            _mainLayer = new Sprite();
            _traceLayer = new Sprite();
            
            WTrace.initTrace(_traceLayer);
            iw = InstanceWatcher.instance;
            
            _statsLayer.addChild(_stats);
            
            stage.scaleMode = StageScaleMode.SHOW_ALL;
            stage.align = StageAlign.TOP;
            stage.quality = StageQuality.BEST;

            stage.addEventListener(MouseEvent.MOUSE_DOWN, _onMouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, _onMouseUp);
 //           stage.addEventListener(MouseEvent.CLICK, _onClick);
            stage.addEventListener(Event.ENTER_FRAME,_onEnterFrame);
            stage.addEventListener(KeyboardEvent.KEY_UP,_onKeyUp);
            
            stage.addChild(_mainLayer);
            stage.addChild(_statsLayer);
            stage.addChild(_traceLayer);
            
            trace("start");
        }

        private function _onClick(e:MouseEvent):void {
 /*           for(var i :int = 0; i<10000; i++){
                _mainLayer.addChild(new CircleMC(Math.random()*20+5));
            }
            */
        }
        
        private function _onKeyUp(e:KeyboardEvent):void {
            switch(e.keyCode){
                case Keyboard.F1 : 
                    stage.removeChild(_mainLayer);
                    _mainLayer = null;
                    _mainLayer = new Sprite();
                    break;
                case Keyboard.F2 : 
                    stage.addChildAt(_mainLayer,0);
                    break;
                case 49: //NUMBER 1
                    var numChilrden:int = _mainLayer.numChildren;
                    trace("before :"+_mainLayer.numChildren);
                    while(_mainLayer.numChildren > 0){
   //                     trace(_mainLayer.numChildren);
                        _mainLayer.removeChildAt(0);
                    }
                    trace("after :"+_mainLayer.numChildren);
                    stage.removeChild(_mainLayer);
                    _mainLayer = null;
                    _mainLayer = new Sprite();
                    
                    break;
                case 65: //A
                    for(var i :int = 0; i<10000; i++){
                        _mainLayer.addChild(new CircleMC(Math.random()*20+5));
                    }
                    break;
               case Keyboard.SPACE:
                    trace(iw.getWatchString() );
                    break;
                    
            }

        }
        
        private function _onMouseDown(e:MouseEvent):void {
        }

        

        private function _onMouseMove(e:MouseEvent):void {
        }

         

        private function _onMouseUp(e:MouseEvent):void {
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, _onMouseMove);
        }

        

        private function _onEnterFrame(e:Event):void{ 
            // _statsを常に最前面に表示しておく
 //           stage.setChildIndex(_stats,stage.numChildren-1);

        }


    }

}
import flash.display.MovieClip;



import flash.display.Bitmap;

import flash.display.BitmapData;

import flash.filters.BlurFilter;

import flash.filters.GlowFilter;

import flash.display.Sprite;


class CircleMC extends MovieClip{
    public function CircleMC(r:Number = 50){
        graphics.lineStyle(1, 0x000000, 0.5);
        graphics.beginFill(0xFF0000, r);
        graphics.drawCircle(Math.random()*400, Math.random()*400, r);
        graphics.endFill();
    }

    
}


//以下未使用

///////////////////////////

/////  WONDERFL TRACE /////

///////////////////////////



import flash.display.Sprite;

import flash.display.Stage;

import flash.text.TextField;

import flash.text.TextFormat;


//global trace function

var trace:Function;
//wtreace class

class WTrace
{
        private static var FONT:String = "Fixedsys";
        private static var SIZE:Number = 12;
        private static var TextFields:Array = [];
        private static var trace_stage:Sprite;

        public static function initTrace(stg:Sprite):void
        {
            trace_stage = stg;
            trace = wtrace;
        }

        private static function scrollup():void
        {
            // maximum number of lines: 100
            if (TextFields.length > 100) 
            {
                var removeme:TextField = TextFields.shift();
                trace_stage.removeChild(removeme);
                removeme = null;
            }

            for(var x:Number=0;x<TextFields.length;x++)
            {
                (TextFields[x] as TextField).y -= SIZE*1.2;
            }

        }

    

        public static function wtrace(... args):void

        {
            var s:String="";
            var tracefield:TextField;
            for (var i:int;i < args.length;i++)
            {
                // imitating flash:
                // putting a space between the parameters
                if (i != 0) s+=" ";
                s+=args[i].toString();
            }

            tracefield= new TextField();
            tracefield.autoSize = "left";
            tracefield.text = s;
            tracefield.y = trace_stage.stage.stageHeight - 20;

            var tf:TextFormat = new TextFormat(FONT, SIZE);
            tracefield.setTextFormat(tf);
            trace_stage.addChild(tracefield);
            scrollup();                      
            TextFields.push(tracefield);

        }

}

/**
* @author ken - Jinten.net
* @version 0.2
by http://www.jinten.net/blog/archives/47
*/

import flash.sampler.NewObjectSample;
import flash.utils.Dictionary;

class InstanceWatcher {
    private static var _instance:InstanceWatcher = null;
    public static function get instance():InstanceWatcher {
        if (_instance == null) {
            _instance = new InstanceWatcher(new SingletonEssence);
        }
        return _instance;
    }
    
    private static var _dict:Dictionary = new Dictionary();
    private static var _instances:Object = new Object();

    public function InstanceWatcher(essense:SingletonEssence) {
        if (essense == null) {
            throw Error('use InstanceWatcher.instance !!');
        }
        startSampling();
    }
    public static function startSampling():void {
        flash.sampler.startSampling();
    }
    public static function pauseSampling():void {
        flash.sampler.pauseSampling();
    }
 

    public static function stopSampling():void {
        flash.sampler.stopSampling();
    }

    public function getWatchString():String {
        watch();
        var sum:int = 0;
        var str:String = '';
        for (var type:String in _dict) {
            var d:Dictionary = _dict[type] as Dictionary;
            var num:int = 0;
            for (var inst:* in d) {
                num++; sum++;
            }
            str += type + ':' + num + '\n';
        }
        str += "sum :" + sum;
        return str;

    }

    private function watch():void {
        pauseSampling();
        var samples:Object = flash.sampler.getSamples();

        for each(var sample:Object in samples) {
            if (sample is NewObjectSample) {
                var nos:NewObjectSample = NewObjectSample(sample);
                var type:String = String(nos.type);
                if (nos.object != undefined) {
                    if (!(_dict[type] is Dictionary)) {
                        _dict[type] = new Dictionary(true);
                    }
                    _dict[type][nos.object] = null;
                }
            }
        }

        flash.sampler.clearSamples();
        startSampling();

    }

}
class SingletonEssence { }