package {
import flash.display.*;
import flash.filters.*;
import flash.events.*;
import flash.geom.*;
import caurina.transitions.Tweener;
[SWF(width='500',height='600',backgroundColor='0xffffff')]
public class Shuffle extends Sprite {
[Embed(source="monalisa.jpg")]
private var myImage:Class;
private var CNT:int = 10;
private var images:Array = [];
private var blank:int;
private var segmentW:int;
private var segmentH:int;
private var processing:Boolean = false;
private var image:Bitmap;
public function Shuffle( ) {
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
splitImage();
}
private function splitImage():void{
var bm:Bitmap = new myImage();
segmentW = bm.width/CNT;
segmentH = bm.height/CNT;
for(var y:int = 0 ; y < CNT ; y++){
for(var x:int = 0 ; x < CNT ; x++){
var bd:BitmapData = new BitmapData(segmentW, segmentH);
var rect:Rectangle = new Rectangle(segmentW*x, segmentH*y ,segmentW, segmentH);
bd.copyPixels(bm.bitmapData,rect,new Point(0,0));
var segmentBm:Bitmap = new Bitmap(bd);
images.push(segmentBm);
}
}
shuffleImage(images.length - 2);
for(var i:int = 0 ; i < images.length - 1 ; i++){
images[i].x = Math.floor(i/CNT) * segmentW;
images[i].y = (i%CNT)*segmentH;
addChild(images[i]);
}
blank = images.length - 1;
}
private function shuffleImage(i:int) : void{
if(i > 0){
var j:int = Math.floor(Math.random() * (i + 1));
if(i != j){
var bm:Bitmap= images[i];
images[i] = images[j];
images[j] = bm;
}
shuffleImage(--i);
}
}
private function onMouseDown(e:*):void{
if(processing ||
stage.mouseX > segmentW*CNT ||
stage.mouseY > segmentH*CNT)
return;
var i:int = Math.floor(stage.mouseX / segmentW) * CNT +
Math.floor(stage.mouseY / segmentH) ;
image = images[i];
setChildIndex(image,numChildren - 1) ;
processing = true;
Tweener.addTween(image, {x: Math.floor(blank/CNT) * segmentW,
y: (blank%CNT) * segmentH,
time:1, transition:"easeOutBack",
onComplete:function():void{
processing = false;
}
} );
images[blank] = images[i];
blank = i;
}
}
}
Author:yamasv@gmail.com
コメント、トラックバック、リンクはお気軽に
-->
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| - | - | - | - | - | 1 | 2 |
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | - | - | - | - | - | - |