2011年5月アーカイブ

Xcode 4 をインストールしてみたらなんと英語版。「なんだー」と思っていたら、Xcode 3 との併用も可能らしいので、Xcode 3 を再びインストール。手順については下記を参考にさせていただきました。感謝。


で、インストールしてXcode 3 で以前作ったモノを開いてみたら、プロジェクトに含まれるコードのほとんどが赤字(存在しない)状態で、かつ左上はBase SDK Missingに...。

調べてみたら、プロジェクト>プロジェクト設定の編集で「一般」を選択して「パス」欄を見ると、Xcodeのルートディレクトリが起点になっているようです。なので・・・


  1. プロジェクトファイル一式をXcode3のルートディレクトリに移動。
  2. プロジェクト>プロジェクト設定の編集で「一般」を選択して、「すべての構成のベースSDK」を「Latest iOS (iOS 4.3)」に変更。
  3. プロジェクト>プロジェクト設定の編集で「ビルド」を選択して、「iOS Deployment Target」など必要な項目を設定する。
  4. プロジェクト>アクティブSDKを設定>Simulator に切替。

と設定し、やっとiOSシミュレータで起動するようになりました。やれやれ。
インストールばかりやってないで、いい加減まともなアプリを1本つくらないと...(^^;。

Base SDK Missingについては、過去の記事「XcodeのBase SDK Missing」もご参照下さい。
ここのところ必要に迫られて、いろいろ図形の描画をしました。で、前回のカスタム線に続いて、今度は外接円を描きました。サンプルはこちら

円の公式(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にでも投稿してみようかしらん。でももうあるかな?

この手のいいライブラリがあったら教えて下さい。



このアーカイブについて

このページには、2011年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年3月です。

次のアーカイブは2011年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。