1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

phina.jsで改善されたグリッド内に画像を表示する

Last updated at Posted at 2017-09-05

phina.jsでグリッドに四角形を敷き詰める - Qiita コメント:#comment-367af7204008c31bfa1f

こちらでお礼を。
一日経って見返してみればぜんぜん参考記事のコードと別物を書いていましたね…。

頂いたサンプルコードを使うとしっかりと並べることができました。
ありがとうございます。

ただ、このまま画像を載せると四角形の中から、はずれる。

image.png

これはグリッドを

    Array.range(0, 16).each((X) =>{
      Array.range(0, 16).each((Y) =>{
        let rect = RectangleShape({
          width: 40,
          height: 60,
          padding: 0, // パディングを0にする
          strokeWidth: 1, // 線幅すっきりに
        }).addChildTo(this);
        rect.setPosition(this.gridX.span(X),this.gridY.span(Y));
        rect.setOrigin(0,0); // 左上を原点にする
        rect.fill = 'transparent';
      });
    });

rect.setOrigin(0,0); // 左上を原点にする
左上を原点にしたからと予想。

この、
「グリッドの点が画面中央に来ることが正しい」
のか
「グリッドの4点に囲まれた四角形(と認識する領域)の中心部が画面中央に来ることが正しい」
のかがまったくわからなくて良く混乱します…。
2進数で0から数えて1番目は0みたいな、ズレというかなんというか…。

閑話休題。

グリッドが左上原点になったので、画像も合わせる

    const player = Sprite('player').addChildTo(this);
    player.x = this.gridX.center();
    player.y = this.gridY.center();
    player.setOrigin(0,0)

2017-09-05_14h23_55.png

行き過ぎてません?
1スタートで16ぶんの9,9グリッドに位置しています。
1時間ぐらい悩んだが、たぶんこれで正しいんだと。
原点が変わったから、画像の左上が画面中央に来ているから正しいのだと言い聞かせました。

こう…さっきの閑話に戻ると…囲碁で中央に石を置いてというのとオセロで中央に置いては違う…みたいな…。

で、前回の雑なグリッドでは目立たなかった(しサイズもちょうど似通っていた)のですが、画像サイズのせいでまだ四角の中央に立っていない。

四角形は4060。画像は3264。
左上に置くので、下に4はみ出て右に8余っている計算になる…はず。

サイズオーバーはしかたないので、はみ出すのは下ではなく上に。
左右は中央に置くので余りは左右均等割付で。

するとこんなコードに。

    const player = Sprite('player').addChildTo(this);
    player.xOffset = 4;
    player.yOffset = -4;
    player.x = this.gridX.center() + player.xOffset;
    player.y = this.gridY.center() + player.yOffset;
    player.setOrigin(0,0)

gridXに対してxOffsetとかoffsetがあっているかわかりませんが、これで、下のライン上で、頭がちょっと出ていて、左右の中央に立っている画像が設置できた。

2017-09-05_14h34_25.png

参考

phina.js-Tips Shapeの原点を変更する - Qiita

今後全部原点を左上に置くことになるとその場回転したいときに困るのかも。
(画像の原点移動ではなくオフセットで対応すると)

前回

phina.jsでbase64形式で画像を使う - Qiita

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?