まず、ここで少し背景の話をします。基本的なゲーム開発を教えるために、Game Engine Stencyl (インターフェイスは Scratch に例えることができます) を使用しています。残念ながら、これはかなり小規模なチームであるため、いくつかの便利な組み込み関数がまだ不足しているため、独自の拡張機能を作成することにしました。私は C#、Java、および UnityScript の使い方を知っていますが、これらの拡張機能は Haxe で作成する必要があります。APIページで答えを見つけるためにすでに数日間試しましたが、それは私の経験レベルをはるかに超えています.
最初の問題は、いくつかのマップ関数を使用しようとしているだけですが、メソッドはすべて静的であることです。16 行目のような関数を使用しようとするたびに、次のようなmapCount()
エラーがスローされますCannot access controls in static function
。これまでのところ、これは静的メソッドから非静的関数を呼び出すことができないためであることがわかりましたが、これに取り組む方法がわかりません (そして、おそらく将来的にはこのような問題が増えるでしょう)。
2 つ目の問題は、14 行目のコメントを外して 16 行目をコメント アウトすると、ゲームは正常にコンパイルされますが、stackoverflow エラーでクラッシュすることです。この関数の引数は次のとおりです。createRecycledActor(actorType, x, y, layerPosition)
これが私のスクリプトの現在の状態であり、現在は多くのことを行っていませんが、この新しい言語の使い方を少しずつ学んでいます。さらに情報が必要な場合は、お知らせください。
Ps、15行目のトレース機能は問題なく動作します。
import com.stencyl.behavior.Script;
import com.stencyl.behavior.Script.*;
import com.stencyl.utils.Utils;
import com.stencyl.models.Actor;
import com.stencyl.models.actor.ActorType;
class MobileGameKit
{
public var controls:Map<String,Actor> = new Map();
public static function CreateThumbstick(mActorType:ActorType, mLocation:Int, mDirectionLock:Int)
{
//createRecycledActor(mActorType, 0, 0, Script.FRONT);
trace("created thumbstick at position: "+mLocation+" with directionlock: "+mDirectionLock);
trace("items in control map: " + Utils.mapCount(controls));
}
}