2011-03-10 138 views
0

我正在开发一款Flash AS3游戏,其中多个项目掉下来并且必须使用鼠标在底部抓住它。flash游戏开发AS3

只想向你介绍游戏。

这是链接类似的游戏:http://www.playitontheweb.com/games/Catch-Falling-Fruit-game.htm

At frame 1 > Preloader 
At frame 2 > Game front page. 
At frame 3 > Game introduction. 
At frame 4 > user will b playing the game. 
At frame 5 > Final Score. 

这是我希望把它在功能明智的。

以下是在所有框架中玩游戏的脚本脚本(AS3)。从1到5,我不想要:请帮助......

package { 
import flash.display.*; 
import flash.events.*; 
import flash.text.*; 
import flash.utils.Timer; 
import flash.utils.getDefinitionByName; 

public class CatchingGame extends MovieClip { 
    var catcher:Catcher; 
    var nextObject:Timer; 
    var objects:Array = new Array(); 
    var score:int = 0; 
    const speed:Number = 7.0; 

    public function CatchingGame() { 
     catcher = new Catcher(); 
     catcher.y = 350; 
     addChild(catcher); 
     setNextObject(); 
     addEventListener(Event.ENTER_FRAME, moveObjects); 
    } 

    public function setNextObject() { 
     nextObject = new Timer(1000+Math.random()*1000,1); 
     nextObject.addEventListener(TimerEvent.TIMER_COMPLETE,newObject); 
     nextObject.start(); 
    } 

    public function newObject(e:Event) { 
     var goodObjects:Array = ["Circle1","Circle2"]; 
     var badObjects:Array = ["Square1","Square2"]; 
     if (Math.random() < .5) { 
      var r:int = Math.floor(Math.random()*goodObjects.length); 
      var classRef:Class = getDefinitionByName(goodObjects[r]) as Class; 
      var newObject:MovieClip = new classRef(); 
      newObject.typestr = "good"; 
     } else { 
      r = Math.floor(Math.random()*badObjects.length); 
      classRef = getDefinitionByName(badObjects[r]) as Class; 
      newObject = new classRef(); 
      newObject.typestr = "bad"; 
     } 
     newObject.x = Math.random()*500; 
     addChild(newObject); 
     objects.push(newObject); 
     setNextObject(); 
    } 

    public function moveObjects(e:Event) { 
     for(var i:int=objects.length-1;i>=0;i--) { 
      objects[i].y += speed; 
      if (objects[i].y > 400) { 
       removeChild(objects[i]); 
       objects.splice(i,1); 
      } 
      if (objects[i].hitTestObject(catcher)) { 
       if (objects[i].typestr == "good") { 
        score += 5; 
       } else { 
        score -= 1; 
       } 
       if (score < 0) score = 0; 
       scoreDisplay.text = "Score: "+score; 
       removeChild(objects[i]); 
       objects.splice(i,1); 
      } 
     } 

     catcher.x = mouseX; 

    } 
} 
} 

也想问你我们可以添加一个计时器在60秒? 只要计时器结束,它就会进入最后一帧来修剪最后的分数。

回答

0
  • 呼叫stop()保持当前帧中,调用nextFrame(),进入到下一个场景
  • 全局函数getTimer()让你从SWF推出经过的毫秒数,可以测量时间与它。
0

使用gotoAndStop()转到您想要的框架并停在那里。我建议使用stop()命令,因为它将框架更改和停止行为绑定为一个;否则它们是同一回事。