Xcode 4 をインストールしてみたらなんと英語版。「なんだー」と思っていたら、Xcode 3 との併用も可能らしいので、Xcode 3 を再びインストール。手順については下記を参考にさせていただきました。感謝。
で、インストールしてXcode 3 で以前作ったモノを開いてみたら、プロジェクトに含まれるコードのほとんどが赤字(存在しない)状態で、かつ左上はBase SDK Missingに…。
調べてみたら、プロジェクト>プロジェクト設定の編集で「一般」を選択して「パス」欄を見ると、Xcodeのルートディレクトリが起点になっているようです。なので・・・
- プロジェクトファイル一式をXcode3のルートディレクトリに移動。
- プロジェクト>プロジェクト設定の編集で「一般」を選択して、「すべての構成のベースSDK」を「Latest iOS (iOS 4.3)」に変更。
- プロジェクト>プロジェクト設定の編集で「ビルド」を選択して、「iOS Deployment Target」など必要な項目を設定する。
- プロジェクト>アクティブSDKを設定>Simulator に切替。
と設定し、やっとiOSシミュレータで起動するようになりました。やれやれ。
インストールばかりやってないで、いい加減まともなアプリを1本つくらないと…(^^;。
ここのところ必要に迫られて、いろいろ図形の描画をしました。で、前回のカスタム線に続いて、今度は外接円を描きました。サンプルは
こちら。
円の公式(r*r = (x – a)* (x – a)+(x -b)*(x -b))と3点の座標から連立方程式を作って、解いただけです。…と書くと簡単そうですけど、ASの式にするのに結構手間がかかりました。数学苦手だし(笑)。スクリプトはこんな感じです。
//3点から円を描く
function drawCircleFromPoint()
{
//任意の3点から円の半径、中心点を求める
//(3点の座標と円の公式の連立方程式)
var A:Number = Math.pow(point1.x,2) – Math.pow(point0.x,2) + Math.pow(point1.y,2) – Math.pow(point0.y,2);
var B:Number = point1.y – point0.y;
var C:Number = Math.pow(point2.x,2) – Math.pow(point0.x,2) + Math.pow(point2.y,2) – Math.pow(point0.y,2);
var D:Number = point2.y – point0.y;
var E:Number = point1.x – point0.x;
var F:Number = point2.x – point0.x;
var b:Number = (F*A – E*C)/(B*F – D*E)/2;
var a:Number = (C – 2*b*D)/(2*F);
var r:Number = Math.sqrt(Math.pow(point0.x – a,2) + Math.pow(point0.y – b,2));
//求めた円を描画
var sp_gr:Graphics = sp.graphics;
sp_gr.clear();
//円;
sp_gr.lineStyle(1,0x00FF00,1);
sp_gr.drawCircle(a,b,r);
//中心点;
sp_gr.moveTo(a-3,b-3);
sp_gr.lineTo(a+3,b+3);
sp_gr.moveTo(a-3,b+3);
sp_gr.lineTo(a+3,b-3);
}
※point0,point1,point2はそれぞれ円のmcを指します(サンプル参照)。
いざ書こうとすると意外と面倒なのでメモとして。あんまり用途がないかもしれませんけど…。
普段あまり使わないのだけれど、Arrayは・・・
var array:Array = new Array(0,2)
とやっても生成できます。で、たまたま横着してこの方式で・・・
array = new Array(0)
とやって、array[0] == 0 になると思ったら、要素ゼロの配列になってしまい、しばらく「何でだろうな??」とはまってしまいました。ヘルプ通りの仕様なんですけどね。
var array:Array = new Array(0,2)
trace(array,array.length) >> 0,2 2
array = new Array(0)
trace(array,array.length) >> 0
まあこんなコトで躓くこともないと思いますが、自分ではまたやりかねないのでメモ。
素直にこうすれば、何の問題も起きないんですけどねw。
array = [0]
trace(array,array.length) >> 0 1
[追記]2011.5.11
野中さんから情報いただきました。初期化は[]を使う方が速いらしいです。
GraphicsでmoveTo,lineToで線を描く時に、Flash上でできる破線、点線などの描画が出来ない。みんなどうしてるのか・・・と調べると、結局自作するしかないようなので、CustomLine用のクラスを書いてみました。点線、破線、波線、二重線に対応してます。サンプルは
こちら。
こういうのって汎用ライブラリはないのかな〜。役に立つようなら
wonderflにでも投稿してみようかしらん。でももうあるかな?
この手のいいライブラリがあったら教えて下さい。
AS,Objective-C,Javascript,その他諸々の備忘録