1

以下のコードを実行しようとすると、次のエラーが発生します。

Uncaught TypeError:オブジェクトtrueにはメソッド'dartObjectLocalStorage$getter'がありません

DartEditorバージョン0.1.0.201201150611ビルド3331でWebアプリケーションを開始しました。これが唯一のdartファイルの完全なコードです。エラーが発生するifステートメントを以下にコメントします。

#import('dart:html');

class Test3D {
  CanvasElement theCanvas;
  WebGLRenderingContext gl;

  static String vertexShaderSrc = """
    attribute vec3 aVertexPosition;

    void main(void) {
      gl_Position = vec4(aVertexPosition, 1.0); 
    }  
  """;

  Test3D() {
  }

  void run() {   
    write("Hello World!");

    // Set up canvas
    theCanvas = new Element.html("<canvas></canvas>");
    theCanvas.width = 100;
    theCanvas.height = 100;
    document.body.nodes.add(theCanvas);

    // Set up context
    gl = theCanvas.getContext("experimental-webgl");
    gl.clearColor(0.5, 0.5, 0.5, 1.0);
    gl.clear(WebGLRenderingContext.COLOR_BUFFER_BIT);

    WebGLShader vertexShader = gl.createShader(WebGLRenderingContext.VERTEX_SHADER);
    gl.shaderSource(vertexShader, vertexShaderSrc);
    gl.compileShader(vertexShader);

    // Adding this line results in the error: Uncaught TypeError: Object true has no method 'dartObjectLocalStorage$getter
    var wasSuccessful = gl.getShaderParameter(vertexShader, WebGLRenderingContext.COMPILE_STATUS);   
  }

  void write(String message) {
    // the HTML library defines a global "document" variable
    document.query('#status').innerHTML = message;
  }
}

void main() {
  new Test3D().run();
}

私はダーツに本当に熱心であり、あなたがこれについて私に与えることができるどんな助けでもありがたいです。

エラーのコンソール出力は次のとおりです。

Uncaught TypeError: Object true has no method 'dartObjectLocalStorage$getter'
htmlimpl0a8e4b$LevelDom$Dart.wrapObject$member
htmlimpl0a8e4b$WebGLRenderingContextWrappingImplementation$Dart.getShaderParameter$member
htmlimpl0a8e4b$WebGLRenderingContextWrappingImplementation$Dart.getShaderParameter$named
unnamedb54266$Test3D$Dart.run$member
unnamedb54266$Test3D$Dart.run$named
unnamedb54266$main$member
RunEntry.isolate$current
isolate$Isolate.run
isolate$IsolateEvent.process
isolate$doOneEventLoopIteration
next
isolate$doRunEventLoop
isolate$runEventLoop
RunEntry
(anonymous function)
4

2 に答える 2

2

このエラーは、コードのどこかでフィールド「dartObjectLocalStorage」がブール値 true でアクセスされていることを示しています。指定されたコード スニペットにはこの識別子が含まれていないため、おそらくエラーの原因ではありません。エラー報告で間違った行番号が表示される可能性があります (ファイルが間違っている可能性もあります)。

これをデバッグするには:

  • コードで「dartObjectLocalStorage」への参照を見つけてみてください。
  • 生成されたコードで「dartObjectLocalStorage$getter」への参照を探してみてください。
  • VM 上で実行するか、別のコンパイラ (frogc と dartc) でコンパイルします。

幸運を。

于 2012-01-20T00:59:37.920 に答える
1

WebGLRenderingContextのドキュメントによると、戻り値の型は Object です。オブジェクトが bool であることがわかっている場合は、bool または dynamic として使用できます

var v=gl.getShaderParameter(頂点シェーダー、WebGLRenderingContext.COMPILE_STATUS)

またはより明示的に

var v=gl.getShaderParameter(vertexShader, WebGLRenderingContext.COMPILE_STATUS).dynamic

条件文で使用します。また、JavaScript コンパイラでビルドするのではなく、frogcでコンパイルしてみてください。通常は、より良いエラーが発生します。

于 2012-01-19T13:49:11.387 に答える