我一直在关注为Actionscript 2编写的教程,并已成功将其转换为AS 3,但是在倒数第二部分我被卡住了。
此处的教程(http://www.cleverpig.com/tutorials/whackapig/whack.htm步骤8)包含以下代码:
if (_currentframe==1) {
// randomly choose whether or not to play
if (random(100)>97) {
// should we tease or popup?
if (random(3)<1) {
this.gotoAndPlay ("popup");
} else {
this.gotoAndPlay (1);
}
}
}
它意味着为角色的动作添加一些随机性。经过一些谷歌搜索后,我在AS 3中创建了这个代码,希望它可以工作。
if (currentFrame==1) {
// randomly choose whether or not to play
if(Math.floor(Math.random()*99)-97) {
// should we tease or popup?
if (Math.floor(Math.random() *3)-1)
) {
this.gotoAndPlay ("popup");
} else {
this.gotoAndPlay (1);
}
}
}
当我使用此代码运行程序时,角色的整个动画将播放一次(向下,向上,向上,向下)。它应该只播放前3帧,然后重复一遍。
编辑:
function random (n:int ) : int {
return Math.floor (Math.random() * n);
}
if (currentFrame==1) {
// randomly choose whether or not to play
if(random(100)): 97 {
// should we tease or popup?
if (random(3)): 1
{
this.gotoAndPlay ("popup");
} else {
this.gotoAndPlay (1);
}
}
}
符号'洞',图层'Actionscript',第1帧,第10行1084:语法错误:在冒号前需要标识符。 符号'孔',图层'Actionscript',第1帧,第10行1008:属性无效。 符号'洞',图层'Actionscript',第1帧,第12行1084:语法错误:在冒号前需要标识符。 符号'孔',图层'Actionscript',第1帧,第13行1008:属性无效。 符号'hole',图层'Actionscript',第1帧,第15行1083:语法错误:else是意外的。
答案 0 :(得分:3)
您可以轻松实现自己的random()函数,并保持其余代码完全相同:
function random (n:int ) : int {
return Math.floor (Math.random() * n);
}
答案 1 :(得分:0)
是否有理由将更多/更少的运算符更改为减号运算符? 似乎if块将执行除0之外的所有内容。
格式为
if (condition)
其中condition的计算结果为true,false。
我相信你的表达式正被转换为布尔类型。 实施例
if (random(100)>97)
是99> 97 =&gt;是(条件评估为真)
是96> 97 =&gt;否(条件评估为假)
if (random(100)-97)
99 - 97 = 2
2表示为布尔值为真(条件评估为真)
97 - 97 = 0
0表示为布尔值为false(条件计算结果为假)
答案 2 :(得分:0)
我给原始教程的作者一个-1,把一个数字随机表达式放在一个像这样的条件中。
要确定条件表达式的结果,它始终被计算为布尔值。如果在其中放入Number / int,则仅当其值为0(.0)时才为false。在所有其他情况下(包括负数),它将评估为真。
是的,您可以通过关注@ weltraumpirat的答案来创建一个更简单的random()函数,但我宁愿建议您从条件中取出random()函数并将其包装在排序的chance()方法中。例如:
function feelingLucky(ratio:Number):Boolean {
return Math.random() <= ratio;
}
然后调用此方法将为您提供更好的x语法,如:
if (feelingLucky(97/99)) {
// you're lucky.
} else {
// not so lucky.
}
或您的其他条件feelingLucky(1/3)
。或者尝试使用feelingLucky(100/100)
连胜。
P.S。由于在if语句之后的冒号和数字:97,您最近的编辑失败了。他们不应该在那里。