AS3 名前空間
http://d.hatena.ne.jp/nitoyon/20070220/p1
ほー。名前空間の問題っぽいので、クラス中のアクセス方法を変えれば大丈夫なようだ?
package {
import flash.display.*;
import flash.text.*;
import flash.events.Event;
import flash.utils.*;
public class HelloWorld extends Sprite {
public function HelloWorld() {
var sample:Sample = new Sample();
log(sample.sample); //=> "fuge"
// sample.sample = "hoge"; //=> Error: プロパティは読み取り専用です。 (public を通してアクセスしているが、setter が定義されていないため)
// sample.private::sample = "hoge"; //=> Error: アクセスできないプロパティ sample へのアクセスを、静的型 HelloWorld.as$0:Sample の参照を使用して試行し ました。(private が特別なため)
}
}
}
class Sample {
public function Sample () {
private::sample = "hoge";
log(public::sample); //=> "hoge"
private::sample = "fuge";
log(public::sample); //=> "fuge"
}
private var _sample:String;
public function get sample():String {
return _sample;
}
private function set sample(v:String):void {
_sample = v;
}
}内部からは接頭辞つけて明示してあげるといける。これでいいのかはわからないけど
あとついでに、
package {
import flash.display.*;
import flash.text.*;
import flash.events.Event;
import flash.utils.*;
public class HelloWorld extends Sprite {
namespace unco = "http://lowreal.net/ns/sample";
public function HelloWorld() {
var sample:Sample = new Sample();
log(sample.sample);
sample.unco::sample = "hoge"; // もちろんエラーはでない
log(sample.sample); //=> "hoge"
}
}
}
class Sample {
public function Sample () {
private::sample = "hoge";
log(public::sample);
private::sample = "fuge";
log(public::sample);
}
namespace hoge = "http://lowreal.net/ns/sample";
private var _sample:String;
public function get sample():String {
return _sample;
}
private function set sample(v:String):void {
_sample = v;
}
hoge function set sample(v:String):void {
_sample = v;
}
}とかキモいことができるみたいだ。