-1

私はフラッシュが初めてで、マウスで制御するゲームを作成しています。しかし、私はこのエラーが発生しています:

エラー 1170: 関数は値を返しません。

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";
        }
    }

それはどのような価値を求めていますか?

4

2 に答える 2

1

今後はコードをフォーマットすることをお勧めします。また、追加の利点がないため、コードを 1 行で記述しないことをお勧めします。コードは、Flash Player が実行するオブジェクト コードにコンパイルされます。

とにかく、あなたの機能にはいくつか問題があります。エラーの最初の原因は、戻り値を 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";
        }

条件が満たされた場合にのみ「星」を返したいことに注意してください。値を返すと、ループが終了し、関数が終了します。もう 1 つのケースは、条件がループ内で満たされない場合、関数は円を返す必要があるということです。ただし、この関数は意味がありません。文字列に「星」という単語が含まれているかどうかをテストしていると思いますよね?その場合は、次のことができます。

        public function get(_bulletT:String):String {
            if (_bulletT.indexOf("star") != -1) {
                return "star";
            } 
            return "circle";
        }

しかし、私はそれがあなたが本当に望んでいることだとは思いません。おそらく、_bulletTが値 star を保持しているかどうかを判断する必要があります。その場合は、次のことができます。

    public function get(_bulletT:String):String {
        if (_bulletT == "star") {
            return "star";
        } 
        return "circle";
    }

関数に getという名前を付けています。これは、クラスを操作し、クラスの getter/setter プロパティを作成する際の Actionscript の予約語です。とにかく、これがお役に立てば幸いです。

于 2013-01-20T15:20:34.357 に答える
0

あなたのシナリオでは、長さ_bulletTがゼロの場合、関数は実際には何も返さない可能性があります。ブロックにはまったく入らず、 (提供したコードによると)ステートメントforがある唯一の場所です。return

ブロックreturnの後に別のステートメントを追加してみてください。または、長さがゼロforの場合の前にエラーをスローしますか?for

于 2013-01-20T15:19:46.993 に答える