27

キャンバスのスケーリングを除いて、CocoonJS 内で KineticJS ゲームを非常にうまく動作させることができました。私は 1024x768 のキャンバスを持っています。これは iPad 2 に最適です。しかし、iPad 4 の場合、Retina 画面のため、ゲームは画面の 1/4 しか占有しません。

CocoonJS は、スケーリングについて次のように述べています。

CocoonJS automatically scales your main canvas to fill the whole screen while you still 
continue working on your application coordinates. There are 3 different ways to specify how
the scaling should be done:

idtkScale
 'ScaleToFill' // Default
 'ScaleAspectFit'
 'ScaleAspectFill'

 canvas.style.cssText="idtkscale:SCALE_TYPE;"; // The SCALE_TYPE can be any of 
 the ones listed above.

これを追加してみました:

layer.getCanvas()._canvas.style.cssText='idtkScale:ScaleAspectFit;';

しかし、それは機能していません。KineticJS で作成されたキャンバスを CocoonJS でスケーリングする方法はありますか?

4

2 に答える 2

1

さて、私はこの質問に対する答えを自分で見つけました。賛成票が非常に多いので、解決策を共有したいと思います。

解決策は、KineticJS 内のいくつかのコードにコメントを付けてから、CocoonJS スケーリングをキャンバス作成に追加することでした。

  1. 次の行にコメントを付けます (すべてを 1 か所にまとめる必要はありません)。

_resizeDOM 内:

this.content.style.width = width + PX;
this.content.style.height = height + PX;

CanvasのsetWidth内:

this._canvas.style.width = width + 'px';

CanvasのsetHeight内:

this._canvas.style.height = height + 'px';
  1. これを Canvas プロトタイプ init 内に追加します。

     this._canvas.style.idtkscale = "ScaleAspectFill";
    

これは私にとってはうまくいきます。次に、キャンバスの正しい縦横比を計算し、CocoonJS にスケーリングさせます。これが私と同じように他の人にとっても役立つことを願っています!

于 2014-08-25T09:52:23.663 に答える