SSブログ

【Macでゲームを作ろう】ブロック崩しを作っていく第2回 [AppleScript辞書はつくれるか?]

さて前回は横方向の移動でしたが今度は縦方向に動かしてみましょう。

 

今回の新しいコードは、

  setFlipped_(|true or false|)

になります。(最終的には使わないけど・・・)


横方向は何も考えずに xを10ずつ増やしたら右方向に動くという結果を得られましたので、こんどは縦方向の yを増やして移動してみましょう。


部分的なスクリーンショット撮影する ショートカット⌘+Shift+4に3つのキーを同時に押すとカーソルの代わりにその場所の座標の数値が表示されます。その座標を見てみると、左上のアップルマークの方の角が{0、0}だとわかります。


ということは、下へ行くほどに座標が増えていくということですね。


  on action1_(sender)

        set origin1 to button1’s frame()'s origin

        set {x, y} to {(origin1's x), (origin1's y)}

        set y to y + 10

        button1's setFrameOrigin_({x:x, y:y})

  end action1_

 

これで、ボタンをクリックごとに座標の大きい『下』へ動くはずですね。


では、コードを変更して実行してみましょう。


 


ss7-1.png


ss7-2.png


 


ふぁ?

なぜに上に移動?

というのは理由があります。

Mac OSでは左上を原点に右下へと座標が大きくなる方式を採用していますが、Xcode(Cocoa-Applescript)では、左下の方が座標の数字が小さい方式を採用しています。数学のグラフと同じですね。

ざっくり書くと、Mac OSでは上から下へ、Xcodeでは下から上へ座標が増えていきます。

これをよく考えて、作っていくことが必要になります。

また、その座標を上下逆にするコードもあります。


    property View1 : missing value


    on action2_(sender)

        tell View1 to setFlipped_(true)

    end action2_

 

ss7-3.png


 


 setFlipped_(true)

で、Viewの座標の上下を上から下へと変更しています。

これで、座標がMac OSで使っている時と同じようになります。


しかし、これは使いません。

どうしてかと言いますと、実際に実行してみるとわかります。


ss7-4.png 

ss7-5.png



つまり、XIBで配置したオブジェクトの位置が天地さかさまになってしまうのです。

(オブジェクトはサカサマにならないですよ。あくまで位置が逆になるだけです)

せっかく好きな位置に配置したのに、逆になってしまうのです。

 

移動のコントロールする場合は、ここに注意する必要がありますね。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。