ぐるぐるポンで、配列をランダムに並べ替えて連結、ということをやってるのですが、そもそもASに配列をランダムに並べ替えるメソッドが無いので、自作する しかないんですよね。

ググれば出てきたかもしれないんですが、難しいことでもないので、探すより早いと思って自分で考えて作りました。

最初はこうだったんだけど

function shuffleArray(arr:Array):Array {  
var retArr:Array = new Array();  
while (arr.length > 0) {  
retArr.push(arr.splice(Math.floor(Math.random() * arr.length), 1).toString());  
}  
return retArr;  
}  

これだと配列の要素が全部Stringになっちゃうんで
こうしました

function shuffleArray(arr:Array):Array {  
var shArr:Array=new Array();  
for (var i:uint=0; i<arr.length; i++) {  
var tempObj:Object=new Object();  
tempObj.val=arr[i];  
tempObj.key=Math.random();  
shArr.push(tempObj);  
tempObj=null;  
}  
shArr.sortOn('key',Array.NUMERIC);  
var retArr:Array=new Array();  
for (var j:uint=0; j<shArr.length; j++) {  
retArr.push(shArr[j].val);  
}  
shArr=null;  
return retArr;  
}  

よろしくどうぞ☆

レンジでお馴染みのAluさんがくだらない(と自ら書いてた)社内向けFlashを作っていたのですが、マウスホイールのイベントがFirefoxだと2倍になっちゃって困る(わたしはそんな現象あるなんて知らなかった)よ!ムキー!と言うので調べてみました。

IEとかチョロメとかは問題ないのですが、FirefoxだとMOUSE_WHEELイベントが2回ずつ発生するみたいです。それは困る。

超絶ググってたのですがなかなか情報見つからなくて、困った時のwithout日本語検索で見つけたのがここ

わたしは簡単な英語しかわかりませんが、ASで何が書いてあるのかはわかるので、ASも言語なんだなあって実感しますね!

んでそれを元にこんなコードを書いてみました。

stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler);  
var lastTimeWheel:Number = 0;  
function wheelHandler(e:MouseEvent) {  
var now:Number = new Date().getTime();  
if (now-lastTimeWheel) {  
//ここに処理を入れればいいんだよ  
trace("delta: " + e.delta + "tmillis: " +(now-lastTimeWheel).toString());  
}  
lastTimeWheel = now ;  
}  

結果、上手くいったようです。わたしも勉強になりました。…φ(.. )

余談ですがそのFlash、落武者の作品ですか?の問いに対してソッコー否定されてました。落武者のサーバにアップされてましたけどね。

keyboard_arrow_up