第一个Flash小游戏制作(1)中我们获得了如下图的例子
我们对程序进行修改,通过随机数来分配图案,如下:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
public class frombegintoend extends MovieClip {
var arr:Array=new Array();
var listData:Array=new Array();
public function frombegintoend():void {
super();
for(var i:int=0;i<3;i++)
{
for(var j:int=0;j<4;j++){
var card:Card10=new Card10();
card.x=135+52*j;
card.y=165+52*i;
card.stop();
addChild(card);
arr.push(card);
}
}
var temp:Array=new Array();
//Math.floor(Math.random()*20)
for(var k:int=0;k<arr.length;k++)
{
temp.push(k);
listData.push(0);
}
for(var L:int=arr.length-1;L>-1;L--)
{
var nu:Number=Math.floor(Math.random()*12)+2;
var nu1:Number=Math.floor(Math.random()*L);
listData[temp[nu1]]=nu;
temp.splice(nu1,1);
var nu2:Number=Math.floor(Math.random()*(L--));
listData[temp[nu2]]=nu;
temp.splice(nu2,1);
}
for(var p:int=0;p<arr.length;p++){
arr[p].gotoAndStop(listData[p]);
}
}
}
}
接着我们对每个图案添加按钮事件,来处理相同的图案消失:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
public class frombegintoend extends MovieClip {
var arr:Array=new Array();
var listData:Array=new Array();
public function frombegintoend():void {
super();
for(var i:int=0;i<3;i++)
{
for(var j:int=0;j<4;j++){
var card:Card10=new Card10();
card.x=135+52*j;
card.y=165+52*i;
card.stop();
addChild(card);
arr.push(card);
card.addEventListener(MouseEvent.CLICK,hc);
}
}
var temp:Array=new Array();
//Math.floor(Math.random()*20)
for(var k:int=0;k<arr.length;k++)
{
temp.push(k);
listData.push(0);
}
for(var L:int=arr.length-1;L>-1;L--)
{
var nu:Number=Math.floor(Math.random()*12)+2;
var nu1:Number=Math.floor(Math.random()*L);
listData[temp[nu1]]=nu;
temp.splice(nu1,1);
var nu2:Number=Math.floor(Math.random()*(L--));
listData[temp[nu2]]=nu;
temp.splice(nu2,1);
}
for(var p:int=0;p<arr.length;p++){
arr[p].gotoAndStop(listData[p]);
}
}
var firsts:Number;
var second:Number;
var firstsC:Card10;
var secondC:Card10;
public function hc(event:Event):void{
var card:Card10=event.target as Card10;
if(isNaN(firsts)){
firsts=listData[arr.indexOf(card)];
firstsC=card;
}else{
second=listData[arr.indexOf(card)];
secondC=card;
}
trace(firsts);
trace(second);
if(!isNaN(firsts) && firstsC!=secondC && firsts==second){
trace(arr);
if(arr.indexOf(firstsC)>arr.indexOf(secondC)){
listData.splice(arr.indexOf(firstsC),1);
listData.splice(arr.indexOf(secondC),1);
}else{
listData.splice(arr.indexOf(secondC),1);
listData.splice(arr.indexOf(firstsC),1);
}
arr.splice(arr.indexOf(firstsC),1);
arr.splice(arr.indexOf(secondC),1);
trace(listData);
removeChild(firstsC);
removeChild(secondC);
firsts=NaN;
second=NaN;
}
}
}
}
最终我们就完成了第一个小程序,接着我们要考虑如何来优化我们的程序。
源码见附件