0

このCDNバージョンのcreatejsを使用しています

 <script type="text/javascript" src="http://code.createjs.com/createjs-2013.09.25.min.js"></script>

YouTubeのこの紹介スクリーンキャストhttp://www.youtube.com/watch?v=OWHJa0jKJgoをフォローしようとしているからです。線があります

 createjs.Sound.addEventListener("loadComplete", this.handleComplete);

ただし、「loadComplete」は最近廃止され、「fileLoad」イベントに置き換えられました。バックボーンビューの関数内でこれを行うと

  loadRegisterSound: function(){
  createjs.Sound.addEventListener("fileload", this.handleLoad);
  createjs.Sound.registerSound("img/pop.mp3", "sound");
  }

それから私はこれを手に入れます

Uncaught TypeError: Cannot read property 'handleEvent' of undefined 

上記の関数の後半を handleLoad 関数に移動すると

loadRegisterSound: function(){
      createjs.Sound.addEventListener("fileload", this.handleLoad);

      },

handleLoad: function(){
   createjs.Sound.registerSound("img/pop.mp3", "sound");
   var ball = new createjs.Shape();
   ball.graphics.beginFill("#000000").drawCircle(0, 0, 50);
   createjs.Tween.get(ball, {loop:true}).to({x:450}, 3000).to({x:50}, 3000);
   createjs.Ticker.addEventListener("tick", this.tick);
   ball.addEventListener("click", this.handleClick);

   ball.x = 50;
   ball.y = 200;
   stage.addChild(ball);
}

その場合、handleLoad 関数が呼び出されたことを示す兆候はありません。何も起こりません。

createjs http://www.createjs.com/Docs/SoundJS/classes/Sound.htmlのドキュメントには、fileload イベントで使用される奇妙な createjs.proxy 関数があります。

 createjs.Sound.addEventListener("fileload", createjs.proxy(this.loadHandler, (this));

ただし、バックボーン ビューで自分のコードで使用しようとすると、予期しない;エラーが発生します。

fileloadイベントを createjs.registerSound api と連携させる方法を誰かが説明できますか?

4

1 に答える 1

1

createjs.proxy はスコープを維持するために使用されるため、ハンドラー関数が呼び出されると、それが存在するオブジェクトまたはライブラリの正しいコンテキストで呼び出されます。javascript のスコープは複雑なトピックであり、慣れていない場合は詳細を読む価値があります。それ。

画像フォルダーからサウンドをロードしているように見え、ロード後に形状を作成してステージに追加しているように見えるため、上記のコード スニペットに混乱しています。あなたのコードを使用すると、これがサウンドを再生したいものだと思います:

createjs.Sound.addEventListener("fileload", createjs.proxy(this.handleLoad, this));
createjs.Sound.registerSound("img/pop.mp3", "sound");
function handleLoad(event) {
  var instance = createjs.Sound.play("sound");
}

ステージに形状を描画することは、サウンドの読み込みと再生には関係がないため、コードを分離することも理にかなっている場合があります。スクリーンキャストは現在古くなっていますが、createjs サイトには、使い始めるのに役立つ便利な公式チュートリアルや簡単な例があります。それが役立つことを願っています。

于 2013-11-04T16:40:11.910 に答える