私は EaselJS を使用してゲームに取り組んでおり、この素晴らしいライブラリが提供する機能をまだ試しています。
私が必要とするのは Alphamaskfilter クラスと Spritesheet クラスです。
現在、次のようなキャンバスがあります。
<canvas id = 'container3' width = 320px; height = 480px;
style = 'outline: 2px solid; margin-right: 10px;float:left;'></canvas>
そして私のスクリプトでは、青い色で四角形を描きました:
var ctx3 = document.getElementById('container3').getContext('2d');
ctx3.beginPath();
ctx3.rect(0,0,320,480);
ctx3.fillStyle = 'blue';
ctx3.fill();
これで、青色の 320*480 キャンバスができました。これで、アニメーション化するスプライト シートができました。ここに、私が書いたスプライトとコードを示します: http://i.imgur.com/XumDvic.png
PS: スプライト フレームは 200*200 参考までに。
stage = new createjs.Stage(document.getElementById('container3'));
var test = new Image();
test.src = 'trans_blackball.png';
test.onload = function(){
var sprite = new createjs.SpriteSheet({
images: [test],
frames: {width: 200, height: 200},
animations: {
born: [0,3,0]
}
});
var animation = new createjs.BitmapAnimation(sprite);
animation.gotoAndPlay("born");
animation.x = 10;
animation.y = 10;
animation.currentFrame = 0;
stage.addChild(animation);
createjs.Ticker.addListener(window);
createjs.Ticker.useRAF = true;
createjs.Ticker.setFPS(10);
}
function tick(){
stage.update();
}
さて、私の質問は次のとおりです。青色の背景 (rect) に黒い円が拡大するアニメーションを期待していますが、最初はキャンバスが青色ですが、一定の数秒後にキャンバス全体が白くなり、アニメーションが白い背景で実行されています。この理由は何ですか?どうすれば解決できますか?
次の 2 点が役立ちます。
- 私はクロムで作業しています.F12とコンソールで確認すると、スプライトアニメーションの開始後に白く表示されていても、キャンバスのfillStyleはまだ青です
キャンバスに青い四角形を描画する代わりに、キャンバスの背景プロパティを青に設定すると、すべて問題ありません!!
<canvas id = 'container3' width = 320px; height = 480px; style = 'background: blue; outline: 2px solid; margin-right: 10px;float:left;'></canvas>
しかし、明らかにこれは私が望むものではありません...
この問題は、ネイティブ キャンバスの四角形を使用せずに、EaselJS の Shape を使用して四角形を描画することでも解決できます。
var shape = new createjs.Shape(); shape.graphics.beginFill("#ff0000").drawRect(0, 0, 320, 480); stage.addChild(shape);
しかし、ネイティブのrect描画コードが機能しない理由を知りたい...
私の下手な英語をさらけ出してください。読んでくれて、助けてくれてありがとう...状況に不明な点がある場合は、もっと詳しく説明できます..ありがとう!