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

Colorflow

1年半以上前に勉強のためにつくったものをwonderflで
動くように整理し直し。

冗長すぎの、動けば文句内だろ系コードで汚すぎて笑えた。
今回書き直したら、本体部分は行数が半分くらいになったw
変なところは残っている(っていうか根幹から変)けど、
これ以上やると切りがなくなるので終了。
Get Adobe Flash player
by umhr 08 Jan 2016
/**
 * Copyright umhr ( http://wonderfl.net/user/umhr )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/bWoy
 */

/*
1年半以上前に勉強のためにつくったものをwonderflで
動くように整理し直し。

冗長すぎの、動けば文句内だろ系コードで汚すぎて笑えた。
今回書き直したら、本体部分は行数が半分くらいになったw
変なところは残っている(っていうか根幹から変)けど、
これ以上やると切りがなくなるので終了。

*/
package 
{
    /**
     * ...
     * @author umhr
     */
    import flash.display.Sprite;
    import flash.filters.BlurFilter;
    import flash.utils.setInterval;
    import flash.utils.clearInterval;
    import flash.events.MouseEvent;
    import flash.events.Event;
    public class Colorflow extends Sprite 
    {
        private var ns:NewSlider = new NewSlider();
        private var poz:uint = new Number(21);
        function Colorflow() {
//プロパティ類
var origin_array:Array = [];
var i:int;
var poz_array:Array = new Array(-480,-30,0,0,0,0);
var sprits:Array = new Array();
var colors_array:Array = new Array(0x00d3ff,0x008eff,0x0043ff,0x0400ff,0x4e00ff,0x9800ff,0xe200ff,0xff00cf,0xff008a,0xff003e,0xfc0000,0xff4900,0xff9300,0xffe000,0xdfff00,0x9dff00,0x64ff00,0x25ff00,0x00ff20,0x00ff7f,0x00ffd5);
var colors2_array:Array = new Array(0xb2f2ff,0xb2ddff,0xb2c6ff,0xb3b2ff,0xcab2ff,0xe0b2ff,0xf6b2ff,0xffb2f1,0xffb2dc,0xffb2c5,0xfeb2b2,0xffc8b2,0xffdeb2,0xfff6b2,0xf5ffb2,0xe1ffb2,0xd0ffb2,0xbdffb2,0xb2ffbc,0xb2ffd8,0xb2fff2);
var animecount_num:uint = new uint(1);
var anime_array:Array = new Array(-480,-30,0,0,0,0);
var animestep_num:uint = new uint(60);
var pt_array:Array = new Array(1);
var maisu:uint = new Number(21);
var pozx_array:Array = new Array(-274,-244,-214,-184,-154,-124,-94,-64,-34,-4,26,56,86,116,146,176,206,236,274,320,480,640,686,722,752,782,812,842,872,902,932,962,992,1022,1052,1082,1112,1142,1172,1202,1232);
var pozy_array:Array = new Array(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2,3, 3.5, 4, 4.5, 5, 5.5, 6, 250, 6, 5.5, 5, 4.5, 4, 3.5, 3,1.2,1.1,1.0,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1,0.0);
var r_array:Array = new Array(-90,-90,-90,-90,-90,-90,-90,-90,-90,-90,-90,-90,-90,-90, -90, -90, -90, -90, -85, -75, 0, 75, 85, 90, 90, 90, 90, 90,90,90,90,90,90,90,90,90,90,90,90,90,90);
stage.scaleMode = "noScale";

//初期化
colors_array.reverse();
colors2_array.reverse();
for (i = 0; i < 21; i++) {
    origin_array.push([[0,9,0,0], [[0, 0, 0],[-100, 0, -100],[100, 0, -100],[100, 0, 100],[-100, 0, 100],[100, 0, 300],[-100, 0, 300]]]);
}

for (i = 0; i < origin_array.length; i++) {
    var mc:Sprite = new Sprite();
    this.addChild(mc);
    mc.x = 465/2;
    mc.y = 240;
    mc.addEventListener(MouseEvent.MOUSE_DOWN, MOUSE_DOWN);
    mc.buttonMode = true;
    sprits.push(mc);
}
for (i = 0; i<maisu; i++) {
    var _obj:Object = {};
    _obj.r = r_array[i+poz];
    _obj.pozx = pozx_array[i+poz];
    _obj.pozy = pozy_array[i+poz];
    pt_array[i] = _obj;
}
addEventListener(Event.ENTER_FRAME,fn_move);


poz = 10;
//何度も使う系
function fc_create(arg_array:Array):void {
    var i:uint = new uint(0);
    var j:uint = new uint(0);
    var k:uint = new uint(0);
    //map
    var data_array:Array = data_array = Math3D.fc_arraycopy(origin_array);
    var dataarraylength_uint:uint = data_array.length;
    //partsaffine
    Math3D.fc_affinepart(data_array,pt_array);
    //affine
    Math3D.fc_affine(data_array,arg_array);
    //sort
    var z_array:Array = Math3D.zSort(pt_array);
    ///pertrance
    for (i = 0; i<dataarraylength_uint; i++) {
        for (j = 0; j<data_array[i][1].length; j++) {
            data_array[i][1][j] = Math3D.pertrans(data_array[i][1][j]);
        }
    }
    //render
    for (k = 0; k<dataarraylength_uint; k++) {
        var mc:Sprite = Sprite(sprits[k]);
        mc.graphics.clear();
        i = z_array[k];
        if(-400 > data_array[i][1][0][0] || data_array[i][1][0][0] > 400){
            continue;
        }

        if(-200 > data_array[i][1][0][0] || data_array[i][1][0][0] > 200){
            mc.graphics.beginFill(colors2_array[i],0.9-(Math.abs(data_array[i][1][0][0])-200)/250);
        }else{
            mc.graphics.beginFill(colors2_array[i],1);
        }
        mc.graphics.moveTo(data_array[i][1][4][0],data_array[i][1][4][1]);
        mc.graphics.lineTo(data_array[i][1][3][0],data_array[i][1][3][1]);
        mc.graphics.lineTo(data_array[i][1][5][0],data_array[i][1][5][1]);
        mc.graphics.lineTo(data_array[i][1][6][0],data_array[i][1][6][1]);
        mc.graphics.lineTo(data_array[i][1][4][0],data_array[i][1][4][1]);
        //
        if(-200 > data_array[i][1][0][0] || data_array[i][1][0][0] > 200){
            mc.graphics.beginFill(colors_array[i],0.9-(Math.abs(data_array[i][1][0][0])-200)/250);
        }else{
            mc.graphics.beginFill(colors_array[i],1);
        }
        mc.graphics.moveTo(data_array[i][1][4][0],data_array[i][1][4][1]);
        for (j = 1; j<5; j++) {
            mc.graphics.lineTo(data_array[i][1][j][0],data_array[i][1][j][1]);
        }
        mc.name = String(i);
    }
}

function fn_move(e:Event = null):void {
    for (var i:uint = 0; i<maisu; i++) {
        pt_array[i].pozx = pt_array[i].pozx*0.8+pozx_array[i+poz]*0.2;
        if ((maisu-1) == i+poz) {
            pt_array[i].pozy = pt_array[i].pozy*0.85+pozy_array[i+poz]*0.15;
            if (Math.abs(pt_array[i].pozy-pozy_array[i+poz]) < 1) {
                return;
            }
        } else {
            pt_array[i].pozy = pozy_array[i+poz];
        }
        pt_array[i].r = pt_array[i].r*0.8+r_array[i+poz]*0.2;
    }
    //
    for (i = 0; i<poz_array.length; i++) {
        anime_array[i] = anime_array[i]*(animestep_num-animecount_num)/animestep_num+poz_array[i]*animecount_num/animestep_num;
    }
    if (animecount_num < animestep_num) {
        animecount_num ++;
    } else {
        animecount_num = 1;
    }
    fc_create(anime_array);
}
/////////////////////////
            setNewSlider();
        }
        
        private function MOUSE_DOWN(e:MouseEvent):void{
            ns.value = int(e.currentTarget.name);
            poz = (20-int(e.currentTarget.name));
        }

        private function setNewSlider():void{
            ns.x= 50+(465-stage.stageWidth)/2;
            ns.y= 390;
            ns.width = stage.stageWidth-100;
            ns.maximum = 19;
            ns.value = 10;
            ns.liveDragging = true;
            ns.addEventListener("change", onChange);
            addChild(ns);
            function onChange():void{
                poz = 20-ns.value;
            }
        }
    }
}

//
class Math3D 
    {
        static public function zSort(pt_array:Array):Array{
            var len:int = pt_array.length;
            var sorter_array:Array = [];
            for (var i:int = 0; i<len; i++) {
                sorter_array[i] = 10000-pt_array[i].pozy;
            }
            return sorter_array.sort(Array.NUMERIC|Array.RETURNINDEXEDARRAY|Array.DESCENDING);
        }
        static public function pertrans(arg_array:Array):Array {
            var _per:Number = 1000/(1000+arg_array[2]);
            return [arg_array[0] * _per,arg_array[1] * _per,_per];
        }
        static public function fc_arraycopy(copy_array:Array):Array {
            var _array:Array = new Array();
            var i_array:Array = new Array();
            var i:uint = new uint(0);
            var j:uint = new uint(0);
            for (i= 0; i<copy_array.length; i++) {
                i_array[0] = copy_array[i][0].concat();
                var j_array:Array = new Array();
                for (j= 0; j<copy_array[i][1].length; j++) {
                    j_array[j] = copy_array[i][1][j].concat();
                }
                i_array[1] = j_array.concat();
                _array[i] = i_array.concat();
            }
            return _array;
        }
        static public function fc_affine(data_array:Array,arg_array:Array):Array {
            var n_cx:Number = Math.cos(arg_array[3]);
            var n_sx:Number = Math.sin(arg_array[3]);
            var n_cy:Number = Math.cos(arg_array[4]);
            var n_sy:Number = Math.sin(arg_array[4]);
            var n_cz:Number = Math.cos(arg_array[5]);
            var n_sz:Number = Math.sin(arg_array[5]);
            var _array:Array = new Array(15);
            _array[3] = arg_array[0];
            _array[4] = arg_array[1];
            _array[5] = arg_array[2];
            _array[6] = n_cz*n_cy+n_sx*n_sy*n_sz;
            _array[7] = n_sx*n_sy*n_cz-n_sz*n_cy;
            _array[8] = n_sy*n_cx;
            _array[9] = n_cx*n_sz;
            _array[10] = n_cx*n_cz;
            _array[11] = -n_sx;
            _array[12] = n_cy*n_sx*n_sz-n_sy*n_cz;
            _array[13] = n_sy*n_sz+n_cy*n_sx*n_cz;
            _array[14] = n_cx*n_cy;
            var dataarraylength_uint:uint = new uint(data_array.length);
            for (var i:uint = 0; i<dataarraylength_uint; i++) {
                var dataarrayi1length_uint:uint = new uint(data_array[i][1].length);
                for (var j:uint = 0; j<dataarrayi1length_uint; j++) {
                    _array[0] = data_array[i][1][j][0];
                    _array[1] = data_array[i][1][j][1];
                    _array[2] = data_array[i][1][j][2];
                    for (var k:uint = 0; k<3; k++) {
                        data_array[i][1][j][k] = _array[0]*_array[6+3*k]+_array[1]*_array[7+3*k]+_array[2]*_array[8+3*k]+_array[k+3];
                    }
                }
            }
            return data_array;
        }
        static public function fc_affinepart(data_array:Array,pt_array:Array):Array {
            var dataarraylength_uint:uint = new uint(data_array.length);
            for (var i:uint = 0; i<dataarraylength_uint; i++) {
                var n_cx:Number = Math.cos(-Math.PI/2);
                var n_sx:Number = Math.sin(-Math.PI/2);
                var n_cy:Number = Math.cos(pt_array[i].r/60);
                var n_sy:Number = Math.sin(pt_array[i].r/60);
                var n_cz:Number = Math.cos(0);
                var n_sz:Number = Math.sin(0);
                var _array:Array = new Array(15);
                _array[3] = pt_array[i].pozx;
                _array[4] = 0;
                //_array[4] = -this.pt_array[i].pozz;
                _array[5] = -pt_array[i].pozy;
                _array[6] = n_cz*n_cy+n_sx*n_sy*n_sz;
                _array[7] = n_sx*n_sy*n_cz-n_sz*n_cy;
                _array[8] = n_sy*n_cx;
                _array[9] = n_cx*n_sz;
                _array[10] = n_cx*n_cz;
                _array[11] = -n_sx;
                _array[12] = n_cy*n_sx*n_sz-n_sy*n_cz;
                _array[13] = n_sy*n_sz+n_cy*n_sx*n_cz;
                _array[14] = n_cx*n_cy;
                var dataarrayi1length_uint:uint = new uint(data_array[i][1].length);
                for (var j:uint = 0; j<dataarrayi1length_uint; j++) {
                    _array[0] = data_array[i][1][j][0];
                    _array[1] = data_array[i][1][j][1];
                    _array[2] = data_array[i][1][j][2];
                    for (var k:uint = 0; k<3; k++) {
                        data_array[i][1][j][k] = _array[0]*_array[6+3*k]+_array[1]*_array[7+3*k]+_array[2]*_array[8+3*k]+_array[k+3];
                    }
                }
            }
            return data_array;
        }
        
    }
    
//UICompo
import flash.display.Sprite;
//import fl.core.UIComponent
import flash.events.Event;
import flash.events.MouseEvent;

class UICompo extends Sprite {
    private var _enabled:Boolean = true;
    public function get enabled():Boolean { return _enabled; }
    public function set enabled(value:Boolean):void {
        _enabled = value;
    }
    override public function get width():Number { return super.width; };
    override public function set width(value:Number):void {
        super.width = value;
        _resize();
    };
    override public function get scaleX():Number { return super.scaleX; };
    override public function set scaleX(value:Number):void {
        super.scaleX = value;
    };
    public var resize:Function = function(e:Event = null):void{};
    public var _resize:Function = function(e:Event = null):void{resize(e)};
}


class NewSlider extends UICompo {
    override public function get enabled():Boolean { return super.enabled; }
    override public function set enabled(value:Boolean):void 
    {
        if (value) {
            this.alpha = 1;
        }else{
            this.alpha = 0.5;
            isThis = false;
            wideRemoveEventListener(this, Event.ENTER_FRAME, ENTER_FRAME);
        }
        super.enabled = value;
    }
    private var _maximum:Number = 10;
    private var _minimum:Number = 0;
    private var _value:Number = 0;
    //private var isButtonDown:Boolean;
    private var _moverbleWidth:Number = 80;
    private var thumb:Sprite = Create.newSprite(null, null, [["beginFill", [0x858788, 1]], ["moveTo", [0, 0]], ["lineTo", [6, 9]], ["lineTo", [6, 11]], ["lineTo", [4, 13]], ["lineTo", [-4, 13]], ["lineTo", [-6, 11]], ["lineTo", [-6, 9]]]);
    
    
    private var _thumb:Sprite = new Sprite();
    private var sp:UICompo = new UICompo();
    public var liveDragging:Boolean;
    private var isThis:Boolean;
    public var snapInterval:Number = 1;
    function NewSlider(){
        makeGraphicPart();
        
        thumb.addChild(Create.newSprite(null, null, [["beginFill", [0xebebeb, 1]], ["moveTo", [0, 1]], ["lineTo", [5, 9]], ["lineTo", [5.5, 10]], ["lineTo", [3, 12]], ["lineTo", [ -3, 12]], ["lineTo", [ -5.5, 10]], ["lineTo", [ -5, 9]]]))
        _resize = function(e:Event = null):void {
            _moverbleWidth = width;
            makeGraphicPart();
        };
        this.addEventListener(MouseEvent.MOUSE_DOWN, MOUSE_DOWN);
        this.addEventListener(Event.ADDED_TO_STAGE, ADDED_TO_STAGE);
        this.addEventListener(Event.REMOVED_FROM_STAGE, REMOVED_FROM_STAGE);
        this.addEventListener(MouseEvent.MOUSE_MOVE, MOUSE_MOVE);
        this.addChild(sp);
    }
    
    private function ADDED_TO_STAGE(e:Event):void {
        stage.addEventListener(MouseEvent.MOUSE_UP, MOUSE_UP);
        stage.addEventListener(KeyboardEvent.KEY_DOWN,KEY_DOWN);
    }
    private function REMOVED_FROM_STAGE(e:Event):void {
        wideRemoveEventListener(this, Event.ENTER_FRAME, ENTER_FRAME);
        for (var i:int = 0; i < eventListenerList.length; i++) {
            wideRemoveEventListener(eventListenerList[i][0],eventListenerList[i][1],eventListenerList[i][2]);
            //wideRemoveEventListener.apply(eventListenerList[i]);??
        }
        eventListenerList = [];
        isThis = false;
        stage.removeEventListener(MouseEvent.MOUSE_UP, MOUSE_UP);
    }
    
    private var change:Function = function(e:Event = null):void{};
    private var thumbDrag:Function = function(e:Event = null):void{};
    private var eventListenerList:Array = new Array();
    private function KEY_DOWN(e:KeyboardEvent):void{
        if(e.keyCode == 39){
            value ++;
            change(e);
        }else if(e.keyCode == 37){
            value --;
            change(e);
        }
    }
    
    override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
        if (type == "thumbPress" || type == "thumbRelease") {
            eventListenerList.push([thumb, type, listener]);
            thumb.addEventListener(MouseEvent.MOUSE_DOWN, listener);
        }else if (type == "change" || type == "thumbDrag") {
            this[type] = listener;
        }else {
            super.addEventListener(type, listener, useCapture, priority, useWeakReference);
        }
    }
    private function makeGraphicPart():void {
        for (var i:int = 0; i < sp.numChildren; i++) {
            sp.removeChildAt(0);
        }
        sp.addChild(Create.newShape(null,null,[["beginFill",[0x8c9295,1]],["drawRoundRect",[0,0,_moverbleWidth+1,4,4]]]));
        sp.addChild(Create.newShape(null, null, [["beginFill", [0xebebeb, 1]], ["drawRoundRect", [1, 1, _moverbleWidth-1, 2, 2]]]));
        sp.addChild(thumb);
        scaleX = 1;
    }
    private function thumbMove(e:Event = null):void {
        var _x:Number = Math.max(Math.min(this.mouseX, (_moverbleWidth)), 0);
        if (thumb.x != thumbXFromMouseX(_x)) {
            _x = thumbXFromMouseX(_x);
            thumb.x = _x;
            value = (_x / _moverbleWidth) * (_maximum - _minimum);
            if(liveDragging){
                change(e);
            }
        }
    }
    
    private function thumbXFromMouseX(_x:Number):Number {
        _x = Math.round((_x / _moverbleWidth) * (_maximum - _minimum) / snapInterval) * snapInterval;
        _x = _moverbleWidth * _x / (_maximum - _minimum);
        return _x;
    }
    
    private function MOUSE_UP(e:MouseEvent):void {
        //isButtonDown = e.buttonDown;
        if (!enabled) { return };
        if(isThis && !liveDragging){
            change(e);
        }
        isThis = false;
        wideRemoveEventListener(this, Event.ENTER_FRAME, ENTER_FRAME);
    }
    private function MOUSE_DOWN(e:MouseEvent):void {
        if (!enabled) { return };
        isThis = true;
        wideRemoveEventListener(this, Event.ENTER_FRAME, ENTER_FRAME);
        this.addEventListener(Event.ENTER_FRAME, ENTER_FRAME);
    };
    private function MOUSE_MOVE(e:MouseEvent):void { };
    
    private function wideRemoveEventListener(_target:*,type:String, listener:Function):void {
        if (_target.hasEventListener(type)) {
            _target.removeEventListener(type, listener);
        }
    }
    
    
    private function ENTER_FRAME(e:Event):void {
        thumbMove(e);
        thumbDrag(e);
    }
    
    
    public function get maximum():Number {return _maximum;    };
    public function set maximum(value:Number):void {
        _maximum = value;
    };
    public function get minimum():Number {return _minimum;    };
    public function set minimum(value:Number):void {
        _minimum = value;
    };
    public function get value():Number {return _value;    };
    public function set value(value:Number):void {
        if (_value != setValue(value)) {
            _value = setValue(value);
            thumb.x = (_value * _moverbleWidth) / (_maximum - _minimum);
        }
    };
    private function setValue(value:Number):Number {
        value = Math.min(Math.max(value, minimum), maximum);
        value = Math.round(value / snapInterval) * snapInterval;
        return value;
    };
    
    private var _tickInterval:Number = 0;
    public function get tickInterval():Number {
        return _tickInterval;
    }
    public function set tickInterval(value:Number):void {
        this.graphics.clear();
        if (value) {
            _tickInterval = value;
            value = (_maximum - _minimum) / value;
            for (var i:int = 0; i < Math.floor(value)+1; i++) {
                this.addChild(Create.newShape(null,null,[["beginFill",[0xCCCCCC,1]],["drawRect",[(_moverbleWidth/value)*i-1,-4,2,2]]]));
            }
        }
    }
    
}

import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.SimpleButton;
import flash.events.KeyboardEvent;

class Create{
    public static var defaultTextFormat:TextFormat = new TextFormat();
    
    public static function newSimpleButton(x_y_w_h_txt:Array = null,property:Array=null,graphics:Array=null):SimpleButton{
        var upState:Sprite = newSprite([x_y_w_h_txt[0],x_y_w_h_txt[1]],null,[["beginFill",[0xCCCCCC,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2],x_y_w_h_txt[3],8]]]);
        upState.addChild(newShape([2,2],null,[["beginFill",[0xE5E5E5,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2]-4,x_y_w_h_txt[3]-4,6]]]))
        var overState:Sprite = newSprite([x_y_w_h_txt[0],x_y_w_h_txt[1]],null,[["beginFill",[0xBBBBBB,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2],x_y_w_h_txt[3],8]]]);
        overState.addChild(newShape([2,2],null,[["beginFill",[0xEEEEEE,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2]-4,x_y_w_h_txt[3]-4,6]]]))
        var downState:Sprite = newSprite([x_y_w_h_txt[0],x_y_w_h_txt[1]],null,[["beginFill",[0xAAAAAA,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2],x_y_w_h_txt[3],8]]]);
        downState.addChild(newShape([2,2],null,[["beginFill",[0xDDDDDD,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2]-4,x_y_w_h_txt[3]-4,6]]]))
        var hitTestState:Shape = newShape([x_y_w_h_txt[0],x_y_w_h_txt[1]],null,[["beginFill",[0,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2],x_y_w_h_txt[3],8]]]);
        if(x_y_w_h_txt[4]){
            upState.addChild(newTextField([0,2,x_y_w_h_txt[2],x_y_w_h_txt[3]-2],[["defaultTextFormat",new TextFormat("_sans", null, null, null, null, null, null, null, "center")],["text",x_y_w_h_txt[4]]]));
            overState.addChild(newTextField([0,2,x_y_w_h_txt[2],x_y_w_h_txt[3]-2],[["defaultTextFormat",new TextFormat("_sans", null, null, null, null, null, null, null, "center")],["text",x_y_w_h_txt[4]]]));
            downState.addChild(newTextField([0,3,x_y_w_h_txt[2],x_y_w_h_txt[3]-3],[["defaultTextFormat",new TextFormat("_sans", null, null, null, null, null, null, null, "center")],["text",x_y_w_h_txt[4]]]));
        }
        var sb:SimpleButton = new SimpleButton(upState,overState,downState,hitTestState);
        
        return sb;
    }
    
    public static function newShape(x_y_w_h_sh:Array = null,property:Array=null,graphics:Array=null):Shape{
        var i:int;
        var sh:Shape;
        if(x_y_w_h_sh && x_y_w_h_sh[4]){
            sh = x_y_w_h_sh[4];
        }else{
            sh = new Shape();
        }
        if(x_y_w_h_sh){
            if (x_y_w_h_sh[0]) { sh.x = x_y_w_h_sh[0] };
            if (x_y_w_h_sh[1]) { sh.y = x_y_w_h_sh[1] };
        }
        if(property){
            for (i = 0; i < property.length; i++) {
                if(property[i] && property[i].length > 1){
                    sh[property[i][0]] = property[i][1];
                }
            }
        }
        if(graphics){
            for (i = 0; i < graphics.length; i++) {
                if(graphics[i] && graphics[i].length > 1){
                    sh.graphics[graphics[i][0]].apply(null, graphics[i][1]);
                }
            }
            
        }
        if(x_y_w_h_sh){
            if (x_y_w_h_sh[2]) { sh.width = x_y_w_h_sh[2] };
            if (x_y_w_h_sh[3]) { sh.height = x_y_w_h_sh[3] };
        }
        return sh;
    }
    public static function newSprite(x_y_w_h_sp:Array = null,property:Array=null,graphics:Array=null,addChild:DisplayObject = null):Sprite{
        var i:int;
        var sp:Sprite;
        if(x_y_w_h_sp && x_y_w_h_sp[4]){
            sp = x_y_w_h_sp[4];
        }else{
            sp = new Sprite();
        }
        if(x_y_w_h_sp){
            if (x_y_w_h_sp[0]) { sp.x = x_y_w_h_sp[0] };
            if (x_y_w_h_sp[1]) { sp.y = x_y_w_h_sp[1] };
        }
        if(property){
            for (i = 0; i < property.length; i++) {
                if(property[i] && property[i].length > 1){
                    sp[property[i][0]] = property[i][1];
                }
            }
        }
        if(graphics){
            for (i = 0; i < graphics.length; i++) {
                if(graphics[i] && graphics[i].length > 1){
                    sp.graphics[graphics[i][0]].apply(null, graphics[i][1]);
                }
            }
            
        }
        if(addChild){
            sp.addChild(addChild);
        }
        if(x_y_w_h_sp){
            if (x_y_w_h_sp[2]) { sp.width = x_y_w_h_sp[2] };
            if (x_y_w_h_sp[3]) { sp.height = x_y_w_h_sp[3] };
        }
        return sp;
    }

    public static function newTextField(x_y_w_h_txt_color_alpha:Array = null,property:Array=null,method:Array=null):TextField{
        var i:int;
        var ta:TextField = new TextField();
        ta.defaultTextFormat = defaultTextFormat;
        if(x_y_w_h_txt_color_alpha){
            if (x_y_w_h_txt_color_alpha[0]) { ta.x = x_y_w_h_txt_color_alpha[0] };
            if (x_y_w_h_txt_color_alpha[1]) { ta.y = x_y_w_h_txt_color_alpha[1] };
            if (x_y_w_h_txt_color_alpha[2]) { ta.width = x_y_w_h_txt_color_alpha[2] };
            if (x_y_w_h_txt_color_alpha[3]) { ta.height = x_y_w_h_txt_color_alpha[3] };
            if (x_y_w_h_txt_color_alpha[4]) { ta.text = x_y_w_h_txt_color_alpha[4] };
            if (x_y_w_h_txt_color_alpha[5]) { ta.textColor = x_y_w_h_txt_color_alpha[5] };
            if (x_y_w_h_txt_color_alpha[6]) { ta.alpha = x_y_w_h_txt_color_alpha[6] };
        }
        if(property){
            for (i = 0; i < property.length; i++) {
                if(property[i] && property[i].length > 1){
                    ta[property[i][0]] = property[i][1];
                }
            }
        }
        if(method){
            for (i = 0; i < method.length; i++) {
                if(method[i] && method[i].length > 1){
                    ta[method[i][0]].apply(null, method[i][1]);
                }
            }
        }
        return ta;
    }
}