msec > +-*/%
msec > +-*/%
♥0 |
Line 268 |
Modified 2016-06-13 00:43:36 |
MIT License
archived:2017-03-20 03:33:40
ActionScript3 source code
/**
* Copyright 110100110101101 ( http://wonderfl.net/user/110100110101101 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/A34g
*/
package {
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
addChild( new Test() );
}
}
}
import flash.display.Sprite;
class Test
extends Sprite
{
public function Test()
{
var note:LLLNote = new LLLNote(this);
var i:int,iMax:int = 1000000;
note.text = "count " + iMax.toString() + "\n";
var value:Number = 0;
var func:Function;
func = testFunc;
var numberMethod:Method = new Method( "Number", testFunc, 1 );
var arrayMethod:Method = new Method( "ArrayToArray", testFunc, [1] );
var numberToNumberMethod:Method = new Method( "NumberToNumber", testFunc_2, 1 );
var array:Array = [];
note.start("");
for( i=0;i<iMax;++i )
{
func(1);
}
note.end(" msec: func(); \n");
note.start("");
for( i=0;i<iMax;++i )
{
testFunc(1);
}
note.end(" msec: testFunc(); \n");
note.start("");
for( i=0;i<iMax;++i )
{
testFunc_Array(array);
}
note.end(" msec: testFunc_Array(); \n");
note.start("");
for( i=0;i<iMax;++i )
{
numberMethod.solve();
}
note.end(" msec: numberMethod.solve(); \n");
note.start("");
for( i=0;i<iMax;++i )
{
arrayMethod.solve();
}
note.end(" msec: arrayMethod.solve(); \n");
note.start("");
for( i=0;i<iMax;++i )
{
numberToNumberMethod.solve();
}
note.end(" msec: numberToNumberMethod.solve(); // " + numberToNumberMethod.solve().toString() + "\n");
note.start("");
for( i=0;i<iMax;++i )
{
value = 3 + Math.PI;
}
note.end(" msec: value = 3 + Math.PI; //" + value.toString() + "\n");
note.start("");
for( i=0;i<iMax;++i )
{
value = 3 - Math.PI;
}
note.end(" msec: value = 3 - Math.PI; //" + value.toString() + "\n");
note.start("");
for( i=0;i<iMax;++i )
{
value = 3 * Math.PI;
}
note.end(" msec: value = 3 * Math.PI; //" + value.toString() + "\n");
note.start("");
for( i=0;i<iMax;++i )
{
value = 3 / Math.PI;
}
note.end(" msec: value = 3 / Math.PI; //" + value.toString() + "\n");
note.start("");
for( i=0;i<iMax;++i )
{
value = 3 % Math.PI;
}
note.end(" msec: value = 3 % Math.PI; //" + value.toString() + "\n");
}
public function testFunc( value:Number ):void{}
public function testFunc_2( value:Number ):Number{ return value + 1 }
public function testFunc_Array( value:Array ):Array{ return value }
}
class Method
{
public var type:String = undefined;
public var solve:Function;
public var $MethodNumber:MethodNumber;
public var $MethodNumberToArray:MethodNumberToArray;
public var $MethodNumberToNumber:MethodNumberToNumber;
public var $MethodNumberToString:MethodNumberToString;
public var $MethodString:MethodString;
public var $MethodStringToArray:MethodStringToArray;
public var $MethodStringToNumber:MethodStringToNumber;
public var $MethodStringToString:MethodStringToString;
public var $MethodArray:MethodArray;
public var $MethodArrayToArray:MethodArrayToArray;
public var $MethodArrayToNumber:MethodArrayToNumber;
public var $MethodArrayToString:MethodArrayToString;
public function Method( type:String, ...args ):void
{
switch( type )
{
default:
case "Function" : solve = args[0]; break;
case "Number" :$MethodNumber = new MethodNumber ( args[0], args[1] ); solve = $MethodNumber.solve; break;//
case "NumberToArray" :$MethodNumberToArray = new MethodNumberToArray ( args[0], args[1] ); solve = $MethodNumberToArray.solve; break;
case "NumberToNumber" :$MethodNumberToNumber = new MethodNumberToNumber ( args[0], args[1] ); solve = $MethodNumberToNumber.solve; break;
case "NumberToString" :$MethodNumberToString = new MethodNumberToString ( args[0], args[1] ); solve = $MethodNumberToString.solve; break;
case "String" :$MethodString = new MethodString ( args[0], args[1] ); solve = $MethodString.solve; break;//
case "StringToArray" :$MethodStringToArray = new MethodStringToArray ( args[0], args[1] ); solve = $MethodStringToArray.solve; break;
case "StringToNumber" :$MethodStringToNumber = new MethodStringToNumber ( args[0], args[1] ); solve = $MethodStringToNumber.solve; break;
case "StringToString" :$MethodStringToString = new MethodStringToString ( args[0], args[1] ); solve = $MethodStringToString.solve; break;
case "Array" :$MethodArray = new MethodArray ( args[0], args[1] ); solve = $MethodArray.solve; break;//
case "ArrayToArray" :$MethodArrayToArray = new MethodArrayToArray ( args[0], args[1] ); solve = $MethodArrayToArray.solve; break;
case "ArrayToNumber" :$MethodArrayToNumber = new MethodArrayToNumber ( args[0], args[1] ); solve = $MethodArrayToNumber.solve; break;
case "ArrayToString" :$MethodArrayToString = new MethodArrayToString ( args[0], args[1] ); solve = $MethodArrayToString.solve; break;
}
}
}
//
class MethodNumber
{
public var func:Function;
public var value:Number;
public function MethodNumber( func:Function, value:Number = NaN ):void{ this.func = func; this.value = value; }
public function solve():void{ func( value ) }
}
class MethodNumberToArray
{
public var func:Function;
public var value:Number;
public function MethodNumberToArray( func:Function, value:Number = NaN ):void{ this.func = func; this.value = value; }
public function solve():Array{ return func( value ) }
}
class MethodNumberToNumber
{
public var func:Function;
public var value:Number;
public function MethodNumberToNumber( func:Function, value:Number = NaN ):void{ this.func = func; this.value = value; }
public function solve():Number{ return func( value ) }
}
class MethodNumberToString
{
public var func:Function;
public var value:Number;
public function MethodNumberToString( func:Function, value:Number = NaN ):void{ this.func = func; this.value = value; }
public function solve():String{ return func( value ) }
}
//
class MethodString
{
public var func:Function;
public var value:String;
public function MethodString( func:Function, value:String = undefined ):void{ this.func = func; this.value = value; }
public function solve():void{ func( value ) }
}
class MethodStringToArray
{
public var func:Function;
public var value:String;
public function MethodStringToArray( func:Function, value:String = undefined ):void{ this.func = func; this.value = value; }
public function solve():Array{ return func( value ) }
}
class MethodStringToNumber
{
public var func:Function;
public var value:String;
public function MethodStringToNumber( func:Function, value:String = undefined ):void{ this.func = func; this.value = value; }
public function solve():Number{ return func( value ) }
}
class MethodStringToString
{
public var func:Function;
public var value:String;
public function MethodStringToString( func:Function, value:String = undefined ):void{ this.func = func; this.value = value; }
public function solve():String{ return func( value ) }
}
//
class MethodArray
{
public var func:Function;
public var value:Array;
public function MethodArray( func:Function, value:Array = undefined ):void{ this.func = func; this.value = value; }
public function solve():void{ func( value ) }
}
class MethodArrayToArray
{
public var func:Function;
public var value:Array;
public function MethodArrayToArray( func:Function, value:Array = undefined ):void{ this.func = func; this.value = value; }
public function solve():Array{ return func( value ) }
}
class MethodArrayToNumber
{
public var func:Function;
public var value:Array;
public function MethodArrayToNumber( func:Function, value:Array = undefined ):void{ this.func = func; this.value = value; }
public function solve():Number{ return func( value ) }
}
class MethodArrayToString
{
public var func:Function;
public var value:Array;
public function MethodArrayToString( func:Function, value:Array = undefined ):void{ this.func = func; this.value = value; }
public function solve():String{ return func( value ) }
}
/////////////////////////////////////////////////////////////////////
import flash.display.Sprite;
import flash.display.DisplayObjectContainer;
import flash.events.Event;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.utils.getTimer;
/**
表示だけなら1行で書ける形の着想元
! MinimalComps の com.bit101.components.Component
https://github.com/minimalcomps/minimalcomps/blob/master/src/com/bit101/components/Component.as
*/
class LLLNote extends Sprite
{
public function LLLNote( _root:DisplayObjectContainer=null, text:String=" ", x:Number=0,y:Number=0,widthX:Number=200,widthY:Number=100 )
{
textFormat = new TextFormat()
textFormat.leftMargin = 0
textFormat.rightMargin = 0
textFormat.align = "left"
textFormat.font = "_等幅" //EXAMPLE "_等幅" "_ゴシック" "_明朝 " "_typewriter" "_serif" "_sans"
textFormat.size = 10
textField = new TextField()
textField.background = false;
textField.backgroundColor = 0xFFFFFF;
textField.border = false;
textField.borderColor = 0x000000;
textField.textColor = 0x000000;
textField.autoSize = "left";
textField.selectable = false;
textField.text = text;
textField.defaultTextFormat = textFormat;
this.text = text;
this.x = x;
this.y = y;
//textField.width = widthX;
//textField.height = widthY;
addChild( textField );
_root.addChild( this );
addEventListener( Event.ENTER_FRAME, _onEnterFrame );
}
private function _onEnterFrame( event:Event ):void { textField.text = text; }
public function start( startText:String = "" ):void{
startTime = getTimer();
text = text + startText;
}
public function end( endText:String = "" ):void{
endTime = getTimer();
elapsedTime = endTime - startTime;
text = text + elapsedTime.toString() + endText;
}
public var elapsedTime:Number = 0;
public var endText:String = "";
public var endTime:Number = 0;
public var startText:String = "";
public var startTime:Number = 0;
public var text:String
public var textFormat:TextFormat
public var textField:TextField
}