配列の比較
テストなのでソースは相当汚いです。
♥0 |
Line 117 |
Modified 2009-06-24 17:35:35 |
MIT License
archived:2017-03-20 15:30:00
ActionScript3 source code
/**
* Copyright atsumo ( http://wonderfl.net/user/atsumo )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/3Co4
*/
/*テストなのでソースは相当汚いです。*/
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;
public class FlashTest extends Sprite {
private var _txtField:TextField = new TextField();
private var _strA:Array = new Array("a","s","d","f","g");
public function FlashTest() {
init();
_txtField.width = stage.stageWidth;
_txtField.height = stage.stageHeight / 2;
_txtField.selectable = false;
addChild(_txtField);
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0x000000);
sp.graphics.drawRect(0,0,100,20);
sp.graphics.endFill();
sp.y = _txtField.height+10;
var txt:TextField = new TextField();
txt.text = "reset";
txt.textColor = 0xFFFFFF;
txt.selectable = false;
txt.mouseEnabled = false;
//txt.x = sp.width/2 - txt.width/2;
sp.addChild(txt);
addChild(sp);
sp.buttonMode = true;
sp.addEventListener(MouseEvent.CLICK , onClickHandler);
}
private function onClickHandler(e:MouseEvent):void
{
_txtField.text = "";
init();
}
private function init():void
{
var array:Array = new Array();
var compareTarget:Array = new Array();
var random:int = int(Math.random()*4)+1;
for(var i:int = 0; i < random; i++)
{
var test:Test = new Test(int(Math.random()*10) , String(_strA[Math.ceil(Math.random()*_strA.length)]));
array.push(test);
}
compareTarget = shuffle(array);
if(random > 2)
{
array.shift();
_txtField.appendText("array.shift();\n");
}
log( array );
_txtField.appendText("\n");
log( compareTarget );
_txtField.appendText("\n\n");
_txtField.appendText("result : "+ match(array , compareTarget) +"\n\n");
_txtField.appendText("sort\n");
array.sortOn(["num" , "str"],[Array.DESCENDING|Array.NUMERIC],null);
compareTarget.sortOn(["num" , "str"],[Array.DESCENDING|Array.NUMERIC],null);
log( array );
_txtField.appendText("\n");
log( compareTarget );
_txtField.appendText("\n\n");
_txtField.appendText("result : "+ match(array , compareTarget) +"\n\n");
}
private function log( array:Array ):void{
for(var i:int = 0; i < array.length; i++)
{
if( i != 0 )
_txtField.appendText(", ");
_txtField.appendText(array[i].num + " " + array[i].str);
}
}
private function shuffle( array:Array ):Array
{
var c:Array = array.concat();
var n:int, i:int = c.length - 1, t:*;
for( ; i; --i ){
n = Math.random() * i >> 0;
t = c[i];
c[i] = c[n];
c[n] = t;
}
return c;
}
private function match( array:Array , compareTarget:Array ):Boolean
{
var al:int = array.length;
var cl:int = compareTarget.length;
if(al != cl)
return false;
var cheker:Boolean;
for(var i:int=0; i < al; i++)
{
if(array[i] == compareTarget[i])
{
cheker = true;
}
else
{
cheker = false;
break;
_txtField.appendText("\nlog");
}
}
return cheker;
}
}
}
class Test
{
public var num:int;
public var str:String;
public function Test(num:int,str:String)
{
this.num = num;
this.str = str;
}
}