【问题标题】:actionscript 3: changing object size after a hitTestObjectactionscript 3:在 hitTestObject 之后改变对象大小
【发布时间】:2015-09-13 11:10:28
【问题描述】:

我想让我的球员分别吃好球(theBall2)或坏球(theBadBall)时的直径变大或变小。我创建了一个 hitTestObject 函数,我试图让球变得越来越小,但它不起作用。

          var player1;
          var player2;
          var player3;
          var theBall2;
          var theBadBall;
          player1 = new player(50,384, 1);
          player2 = new player(944,384,2);
          player3 = new player(488,84,3);
          stage.addChild(player1);
          stage.addChild(player2);
          stage.addChild(player3);
          var player.width: player.width * 2; // 1086 syntax error: expecting semicolon before dot.
          var player.height:player.height * 2;// 1086 syntax error: expecting semicolon before dot.

        //this function checks to see if theBall2 has collided with a player
        if(theBall2.hitTestObject(player1) || theBall2.hitTestObject(player2) || theBall2.hitTestObject(player3))
        {
            //removes the ball from the stage
            trace("a player has eaten a ball");
            stage.removeChild(theBall2);
            //adds new ball
            theBall2 = new ball2();
            theBall2.x = stage.stageWidth/2;
            theBall2.y = stage.stageHeight/2;
            stage.addChild( theBall2 );
            //makes player larger
            player.width =  player.width * 4; // do I have to define player1, player2, player3, instead of their class player?
            player.height =  player.height * 4;
        }

        //this function checks to see if theBadBall has collided with a player
        if(theBadBall.hitTestObject(player1) || theBadBall.hitTestObject(player2) || theBadBall.hitTestObject(player3))
        {
            //removes thebadball from the stage
            trace("a player has eaten bad ball");
            stage.removeChild(theBadBall);
            //adds new ball
            theBadBall = new badball();
            theBadBall.x = stage.stageWidth/2;
            theBadBall.y = stage.stageHeight/2;
            stage.addChild(theBadBall);
            //makes player smaller
            player.width =  player.width / 2;
            player.height =  player.height / 2;
        }

如何让它发挥作用?

【问题讨论】:

  • 这与您的其他问题有什么关系? stackoverflow.com/questions/32547859/…
  • 能否请您展示最少的研究工作并至少查看该语言的语法是如何工作的? SO 不是代码编写服务。请不要盲目地复制和粘贴代码片段。
  • 他们正在制作游戏的不同部分。对不起,但老实说我不知道​​如何写 as3,我查了很多,这是我最后的选择。我这样做是为了一项任务,明天到期啊。没有冒犯的意思
  • @null 我并不是要让人们为我编写代码,我只是需要帮助知道我做错了什么

标签: actionscript-3 object resize size hittest


【解决方案1】:

任何地方都没有player,因此您无法更改其高度或宽度。 这些行是完全错误的:var player.width: player.width * 2;

您有player1player2player3,您需要更改它们的大小。那些是电影剪辑?

如果是这样,您可以例如:

var player:MovieClip;
var goodBallHit:Boolean;
if(theBall2.hitTestObject(player1)){
    player = player1;
    goodBallHit = true;
}else if(theBall2.hitTestObject(player2)){
    player = player2;
    goodBallHit = true;
}else if(theBall2.hitTestObject(player3)){
    player = player3;
    goodBallHit = true;
}

if(goodBallHit){
    stage.removeChild(theBall2);
    theBall2 = new ball2();
    theBall2.x = stage.stageWidth/2;
    theBall2.y = stage.stageHeight/2;
    stage.addChild(theBall2);
    player.width = player.width * 4;
    player.height = player.height * 4;
}

因此,在这种情况下,您确实需要引用实际对象 player1、..2 或 ..3。

这只是一种方式,还有很多其他方式。我根本不建议使用 hitTestObject,尤其是对于球,但这可能是您开始的好方法。

您的整个项目需要更多的计划,但我知道如果您不太了解语言,这将非常困难。只要有一些耐心,从这个网站和谷歌搜索信息,我相信你会以惊人的速度完成这项工作。 (+你真的需要继续谷歌搜索,肯定有几十个类似的游戏资源和教程)

【讨论】:

  • 好的,非常感谢您的帮助!老实说,我不知道这看起来很愚蠢啊哈哈,我看了很多教程,但我从来没有真正理解过语法,所以它们没有意义。我创建了一个 player.as 类,player1、player2 等影片剪辑正在播放该类。上面的所有代码都写在 main.as 中。在播放器类中做更多的事情会更好吗?
  • main.as 对它有好处。如果您将单词MovieClip 替换为player,我的示例可能会直接起作用。是的,随机教程令人困惑的一面是,其中一些是直接在操作面板中编写的,而另一些则是在 .as 文件中编写的。不知道哪种方式更适合学习语法,我自己两个都用,操作面板通常用于小型项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多