我是闪光灯的新手,我正在制作一款用鼠标控制的游戏。但是我收到了这个错误:
错误1170:函数未返回值。
我正在尝试编写一个getter来将bulletType返回到main.as
public function get(_bulletT:String):String
{
for (var i = 0; i < _bulletT.length; i++)
{
if (_bulletT.charAt(i) == "star")
{
return "star";
"star";
}
else
{
return "circle";
"circle";
}
}
它要求什么价值?
答案 0 :(得分:1)
我建议您以后格式化代码。此外,最好不要将代码写在一行中,因为它不会带来额外的好处。您的代码将被编译为Flash播放器将执行的目标代码。
无论如何,你的功能有些问题。第一个错误来源是您将返回值括在if / else块中。函数体本身不指定返回。以下是您的代码的外观:
public function get(_bulletT:String):String {
for (var i:int = 0; i < _bulletT.length; i++) {
if (_bulletT.charAt(i) == "star") {
return "star";
}
}
return "circle";
}
请注意,如果满足条件,您只想返回“star”。返回值后,循环将终止,函数将退出。另一种情况是,如果循环中不满足条件,则函数应返回圆。但是,这个功能没有意义。我相信你正在测试一个字符串是否包含“star”这个词吧?如果是这种情况,那么你可以这样做:
public function get(_bulletT:String):String {
if (_bulletT.indexOf("star") != -1) {
return "star";
}
return "circle";
}
然而,我不认为那是你真正想要的。您可能想确定 _bulletT 是否包含值星号。如果是这种情况,那么你可以这样做:
public function get(_bulletT:String):String {
if (_bulletT == "star") {
return "star";
}
return "circle";
}
您正在命名函数 get ,这是在使用类并为类创建getter / setter属性时Actionscript中的保留字。无论如何,我希望这有用。
答案 1 :(得分:0)
在你的场景中,当_bulletT
的长度为零时,该函数可能确实根本不返回任何内容 - 它根本不会进入for
块,并且(根据你的代码)已提供)是唯一有return
陈述的地方。
也许尝试在return
阻止后添加另一个for
语句?如果长度为零,或者在for
之前抛出错误?