トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   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インスタンスを生成することはできません。というより、このような代入ができないように、型指定はされるものです。
var my_date:Date = "Mon Jun 1 16:30:00 GMT+0900 2009";

引用:
cloudboyさんは書きました:
長いStringの文字列を、splitで分解してそれを、
配列に格納していくのですが、その一つ一つを、
Point型にキャストして読み込むことってできるかと思ったのですが、
うまくできないようです。

以下のPointTestクラスをドキュメントクラスで
読み込んでいただくと、
引用:
TypeError: Error #1034: 強制型変換に失敗しました。"(x=381, y=138)" を flash.geom.Point に変換できません。
at PointTest/init()
at PointTest()

//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], typeof posArray[0], posArray[0] is String);
			// ...[後略]...

なお、お使いの環境はプロフィールに記入されると、回答者からも確かめやすく、便利です。


----------------
 

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さんは書きました:
となりますと、このように、
(x=381, y=138)
というような要素一つ一つで構成された配列から、
Point型として変換して、活用する方法はないということでしょうか?
つまり、381と、138がほしい場合は、Stringを操作して、
それらの値だけを取り出すのが一番スマートな処理になるのかなと思っております。


----------------
 

cloudboy
Åê¹ÆNo.42475
投稿日時: 2009-6-1 17:36
新米
居住地:
投稿: 4
使用環境:
WindowsXP professional sp2
Flash CS3
ActionScript3.0
Re: 文字列を分解して、配列に変換し、それをPoint型として扱うことは可能でしょうか
なるほど、traceの吐き出しは便宜上の表現というわけですね。
処理を含めもう一度考え直すことに致します。
頭の中がスッキリしました。
非常に分かりやすいご説明ありがとうございました。


----------------

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops