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

Flip Panel

GAME :: パネルを反転させてくゲーム
* 
* クリックしたパネルとその上下左右のパネルが反転します。正式名称があるのかよく分かりませんが、よくあるあれです。
Get Adobe Flash player
by daniwell 04 May 2010
/**
 * Copyright daniwell ( http://wonderfl.net/user/daniwell )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/tvI7
 */

/**
 * GAME :: パネルを反転させてくゲーム
 * 
 * クリックしたパネルとその上下左右のパネルが反転します。正式名称があるのかよく分かりませんが、よくあるあれです。
 */
package  
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;

	[SWF(backgroundColor = "0xededed", frameRate = "30", width = "465", height = "465")]
	public class Flip extends Sprite
	{
		// ヨコ×タテ(ランダム)
		private var num_w :uint = uint(Math.random() * 10 + 5);
		private var num_h :uint = num_w;
		
		private var mainSp:Sprite = new Sprite();
		private var panels:Vector.<Vector.<Panel>> = new Vector.<Vector.<Panel>>(num_h);
		
		public function Flip() 
		{
			for (var i:int = 0; i < num_h; i ++)
			{
				panels[i] = new Vector.<Panel>(num_w);
				
				for (var j:int = 0; j < num_w; j ++)
				{
					var p:Panel = new Panel();
					p.change(); if (Math.random() < 0.5) p.change();
					p.x = j * 20; p.y = i * 20;
					p.addEventListener(MouseEvent.CLICK, clickHandler);
					mainSp.addChild(p);
					
					panels[i][j] = p;
				}
			}
			mainSp.x = mainSp.y = (465 - mainSp.width) / 2; // center
			addChild(mainSp);
		}
		private function clickHandler(e:MouseEvent):void
		{
			var nx:int = e.target.x / 20;
			var ny:int = e.target.y / 20;
			
			panels[ny][nx].change();
			if (0 <= nx - 1)		panels[ny][nx - 1].change();
			if (nx + 1 < num_w)	panels[ny][nx + 1].change();
			if (0 <= ny - 1)		panels[ny - 1][nx].change();
			if (ny + 1 < num_h)	panels[ny + 1][nx].change();
		}
	}
}
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Rectangle;

class Panel extends Sprite
{
	private var _flag:Boolean = false;
	private var _bmp :Bitmap  = new Bitmap(new BitmapData(20, 20, false, 0xededed));
	
	public function Panel()
	{
		_bmp.bitmapData.fillRect(new Rectangle(1, 1, 18, 18), 0x888888);
		addChild(_bmp);
		
		buttonMode = true;
	}
	public function change():void
	{
		_flag = ! _flag;
		if (_flag)	_bmp.bitmapData.fillRect(new Rectangle(3, 3, 14, 14), 0xffcc00);
		else			_bmp.bitmapData.fillRect(new Rectangle(3, 3, 14, 14), 0xffffff);
	}
}