flash on 2011-2-11
♥0 |
Line 149 |
Modified 2011-02-18 19:35:50 |
MIT License
archived:2017-03-20 18:01:55
ActionScript3 source code
/**
* Copyright feeyar ( http://wonderfl.net/user/feeyar )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/d7sJ
*/
package {
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
import flash.display.Graphics;
import flash.display.Sprite;
[SWF (backgroundColor="0x000000")]
public class FlashTest extends Sprite {
public static const GRID_WIDTH:Number = 30;
public function FlashTest() {
// write as3 code here..
drawBlocks();
configEventListenners();
}
private var gridLayer:Sprite = new Sprite();
private var blockLyaer:Sprite = new Sprite();
private var blocks:Array = [];
private var selectedBlocks:Array = [];
private var startX:Number = 50;
private var startY:Number = 50;
//_currentXindex
private var _currentXindex:int = -1;
public function get currentXindex():int {
return _currentXindex;
}
public function set currentXindex(value:int):void {
if(value>=0&&value<9){
this._currentXindex = value;
}
}
//_currentYindex
private var _currentYindex:int = -1;
public function get currentYindex():int {
return _currentYindex;
}
public function set currentYindex(value:int):void {
if(value>=0&&value<9){
this._currentYindex = value;
}
}
private function drawBlocks():void {
for(var i:int = 0 ;i< 9;i++){
for(var j:int = 0;j<9;j++){
var color:uint = getColor(i,j);
if(color != 0x000000){
var block:Block = new Block(color);
block.xindex = i;
block.yindex = j;
block.x = startX + i*(GRID_WIDTH-1);
block.y = startY + j*(GRID_WIDTH-1);
blocks.push(block);
addChild(block);
}
}
}
}
private function configEventListenners():void {
stage.addEventListener(KeyboardEvent.KEY_UP,onKeyUpHandler);
}
private function getColor(i:int,j:int):uint {
var color:uint = 0x000000;
if(i>=3&&i<6&&j<3) color = 0xffcc00;
if(i>=3&&i<6&&j>=3&&j<6) color = 0xffffff;
if(i>=3&&i<6&&j>=6) color = 0xffff00;
if(i<3&&j>=3&&j<6) color = 0xC60000;
if(i>=6&&j>=3&&j<6) color = 0x3399ff;
return color;
}
private function onKeyUpHandler(e:KeyboardEvent):void {
switch(e.keyCode){
case Keyboard.LEFT:
this.currentXindex--;
this.currentYindex = -1;
selectByLine(currentXindex,-1);
break;
case Keyboard.RIGHT:
this.currentXindex++;
this.currentYindex = -1;
selectByLine(currentXindex,-1);
break;
case Keyboard.UP:
this.currentYindex--;
this.currentXindex = -1;
selectByLine(-1,currentYindex);
break;
case Keyboard.DOWN:
this.currentYindex++;
this.currentXindex = -1;
selectByLine(-1,currentYindex);
break;
case 65://a
moveLine("x",-1);
break;
case 83://s
moveLine("y",1);
break;
case 68://d
moveLine("x",1);
break;
case 87://w
moveLine("y",-1);
break;
}
}
private function moveLine(arg:String,n:int):void {
if(selectedBlocks.length <= 3){
}else {
for each(var block:Block in selectedBlocks){
block[arg] += (GRID_WIDTH -1)*3*n;
}
}
}
private function selectByLine(x:int,y:int):void {
selectedBlocks = [];
for each(var block:Block in blocks){
if(block.xindex == x || block.yindex == y){
block.selected = true;
selectedBlocks.push(block);
}else {
block.selected = false;
}
}
}
private function layoutByX(index:int):void {
}
}
}
import flash.filters.ColorMatrixFilter;
import flash.display.Graphics;
import flash.display.Sprite;
class Block extends Sprite {
public function Block(color:uint = 0):void {
this.color = color;
build();
}
private var color:uint;
public var xindex:uint = 0;
public var yindex:uint = 0;
public function set selected(value:Boolean):void {
if(value){
this.alpha = .8;
}else{
this.alpha = 1;
}
}
private function build():void {
var g:Graphics = this.graphics;
g.beginFill(color);
g.lineStyle(1,0xcccccc);
g.drawRect(0,0,30,30);
g.endFill();
}
}