メイン ActionScript 3.0 特設会議室
文字列を分解して、配列に変換し、それをPoint型として扱うことは可能でしょうか | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| cloudboy | Åê¹ÆNo.42471 投稿日時: 2009-6-1 16:16 |
新米 ![]() ![]() 居住地: 投稿: 4
使用環境:
WindowsXP professional sp2 Flash CS3 ActionScript3.0 |
文字列を分解して、配列に変換し、それをPoint型として扱うことは可能でしょうか 一点、どうしても分からないことが
Point型の扱いで生じましたので、質問させてください。 長いStringの文字列を、splitで分解してそれを、 配列に格納していくのですが、その一つ一つを、 Point型にキャストして読み込むことってできるかと思ったのですが、 うまくできないようです。 以下のPointTestクラスをドキュメントクラスで 読み込んでいただくと、 TypeError: Error #1034: 強制型変換に失敗しました。"(x=381, y=138)" を flash.geom.Point に変換できません。 at PointTest/init() at PointTest() となりますが、このように、 (x=381, y=138)のような値をPointとして扱うためには型変換する以外に 何かいい方法はないでしょうか。 そもそも、ここからはPoint型として扱うことはできないのでしょうか。 //PointTestクラス package{ import flash.display.MovieClip; import flash.geom.Point; import flash.events.Event; import flash.events.MouseEvent; public class PointTest extends MovieClip{ private var posArray:Array = new Array(); public function PointTest(){ //ポイント型のように配列を生成 var posString:String = "(x=381, y=138)/(x=381, y=138)/(x=381, y=138)/(x=375, y=151)/(x=347, y=185)"; posArray = posString.split("/"); init(); }//constructor private function init():void{ trace(posArray[0]); var num:Number = posArray.length; for(var i:uint = 0; i < num; i++){ var checkPoint:Point = posArray[i]; trace(checkPoint.x); trace(checkPoint.y); } }//init() }//class }//package |
| 野中文雄 | Åê¹ÆNo.42472 投稿日時: 2009-6-1 16:40 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 文字列を分解して、配列に変換し、それをPoint型として扱うことは可能でしょうか 「型指定」をされているだけで、「型変換」しているようには見受けられません。
たとえば、以下のステートメントで、Dateインスタンスを生成することはできません。というより、このような代入ができないように、型指定はされるものです。引用: cloudboyさんは書きました: なお、お使いの環境はプロフィールに記入されると、回答者からも確かめやすく、便利です。 |
| cloudboy | Åê¹ÆNo.42473 投稿日時: 2009-6-1 17:12 |
新米 ![]() ![]() 居住地: 投稿: 4
使用環境:
WindowsXP professional sp2 Flash CS3 ActionScript3.0 |
Re: 文字列を分解して、配列に変換し、それをPoint型として扱うことは可能でしょうか 早速のご回答ありがとうございます。
String型になってしまっているというのは分かりました。 となりますと、このように、 (x=381, y=138) というような要素一つ一つで構成された配列から、 Point型として変換して、活用する方法はないということでしょうか? つまり、381と、138がほしい場合は、Stringを操作して、 それらの値だけを取り出すのが一番スマートな処理になるのかなと思っております。 ※Point型として、これらを配列に入れていった場合は、取り出すときもPointとしてきちんと利用できるのは確認できました。 ※単純にpoint型の値を多数要素として含んでいる配列オブジェクトをtraceすると、今回使おうとした文字列と同様のもの (x=381, y=138),(x=381, y=138),(x=381, y=138),(x=375, y=151),(x=347, y=185) が吐き出されたので、それならば、この文字列からだけでも、逆に一つ一つをPointとして使えるのでは、という考えからの質問でした。 紛らわしい処理で大変失礼しました。
|
| 野中文雄 | Åê¹ÆNo.42474 投稿日時: 2009-6-1 17:27 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 文字列を分解して、配列に変換し、それをPoint型として扱うことは可能でしょうか trace()関数の[出力]は、引数に渡した値(インスタンス)の「文字列表現」であり、その(インスタンスの)実体ではありません。Dateインスタンスがtrace()されると、中身がわかりやすいようにフォーマットされて、"Mon Jun 1 16:30:00 GMT+0900 2009"と[出力]されるのがその例です。
ソースのデータを文字列でもたせたいなら、値の組の数値だけをCSV形式にするなどが実際的かと思います。 引用: cloudboyさんは書きました: |
| cloudboy | Åê¹ÆNo.42475 投稿日時: 2009-6-1 17:36 |
新米 ![]() ![]() 居住地: 投稿: 4
使用環境:
WindowsXP professional sp2 Flash CS3 ActionScript3.0 |
Re: 文字列を分解して、配列に変換し、それをPoint型として扱うことは可能でしょうか なるほど、traceの吐き出しは便宜上の表現というわけですね。
処理を含めもう一度考え直すことに致します。 頭の中がスッキリしました。 非常に分かりやすいご説明ありがとうございました。
|
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン




.6.8
たとえば、以下のステートメントで、Dateインスタンスを生成することはできません。というより、このような代入ができないように、型指定はされるものです。

