【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_
これで、ボタンをクリックごとに座標の大きい『下』へ動くはずですね。
では、コードを変更して実行してみましょう。
ふぁ?
なぜに上に移動?
というのは理由があります。
Mac OSでは左上を原点に右下へと座標が大きくなる方式を採用していますが、Xcode(Cocoa-Applescript)では、左下の方が座標の数字が小さい方式を採用しています。数学のグラフと同じですね。
ざっくり書くと、Mac OSでは上から下へ、Xcodeでは下から上へ座標が増えていきます。
これをよく考えて、作っていくことが必要になります。
また、その座標を上下逆にするコードもあります。
property View1 : missing value
on action2_(sender)
tell View1 to setFlipped_(true)
end action2_
setFlipped_(true)
で、Viewの座標の上下を上から下へと変更しています。
これで、座標がMac OSで使っている時と同じようになります。
しかし、これは使いません。
どうしてかと言いますと、実際に実行してみるとわかります。
つまり、XIBで配置したオブジェクトの位置が天地さかさまになってしまうのです。
(オブジェクトはサカサマにならないですよ。あくまで位置が逆になるだけです)
せっかく好きな位置に配置したのに、逆になってしまうのです。
移動のコントロールする場合は、ここに注意する必要がありますね。
コメント 0