首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >flash游戏开发AS3

flash游戏开发AS3
EN

Stack Overflow用户
提问于 2011-03-10 19:53:14
回答 2查看 1.4K关注 0票数 0

我正在开发一个在flash AS3的游戏,其中多个项目正在下降,并必须在底部使用鼠标捕捉到它。

只是想向你简要介绍一下这个游戏。

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

代码语言:javascript
运行
复制
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点,这是我不想要的:请帮帮忙......

代码语言:javascript
运行
复制
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秒的计时器?一旦计时器超时,它就会转到最后一帧来计算最终比分。

EN

回答 2

Stack Overflow用户

发布于 2011-03-10 22:25:50

  • 调用stop()要停留在当前帧内,请调用nextFrame()以前进到下一个场景
  • 全局函数getTimer()为您提供从swf启动经过的毫秒数,您可以用它来测量时间。
票数 0
EN

Stack Overflow用户

发布于 2011-04-06 04:59:15

使用gotoAndStop()转到所需的帧并停止。我推荐使用命令而不是stop(),因为它将帧更改和停止行为捆绑在一起;否则,它们是同一件事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5259260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档