Loaderを使って取得した画像データをBitmapで受取りたいのですが、
Error: 静的型 flash.display:DisplayObject の値が、関連しない可能性が高い型 flash.display:Bitmap に暗黙で型変換されています。
map = lo.content;
と言われてしまいます。何がいけないのでしょうか。参考書ではBitmapにLoader.contentを代入していましたが!?
↓以下ソース
► スポイラーを表示
先頭にfが付くんだったらいっそのことない方が・・・w←MoNoQLoREATOR さんが書きました: やはり関数名が小文字から始まるのは気持ち悪かったので、先頭にfをつけて関数であることを示す符号なのだと思うことにしました。
http://livedocs.adobe.com/flash/9.0_jp/ ... tcher.htmlMoNoQLoREATOR さんが書きました:私は、EventDispatcher()には必ず引数を指定しなければならないのかと思い、あてずっぽうで値を入れていたのですが、引数を指定する必要はありませんでした・・・。ここに引数を指定することにはどのような意味があるのですか?
リファレンスを見るとこのようになっています。Adobe さんが書きました: EventDispatcher クラスは、一般に基本クラスとして使用されます。このため、ほとんどの開発者はこのコンストラクタ関数を使用する必要がありません。ただし、 IEventDispatcher インターフェイスを実装する上級開発者は、このコンストラクタを使用する必要があります。EventDispatcher クラスを拡張できないため、代わりに IEventDispatcher インターフェイスを実装する必要がある場合は、このコンストラクタを使用して、EventDispatcher クラスのインスタンスを集約します。
パラメータ
target:IEventDispatcher (default = null) — EventDispatcher オブジェクトに送出されるイベントのターゲットオブジェクトです。このパラメータが使用されるのは、EventDispatcher インスタンスが、IEventDispatcher を実装するクラスごとに集約される場合です。これは、含んでいるオブジェクトをイベントのターゲットにするために必要です。クラスが単純に EventDispatcher を継承する場合は、このパラメータを使用しないでください。
// package等略
public class Sample /*extends 何か*/ implements IEventDispatcher // 多重継承できないのでEventDispatcher委譲して実装
{
private var ed : EventDispatcher = new EventDispatcher(this);
public function addEventListener(type : String, listener : function, useCapture : Boolean = true, priority : int = 0, useWeakReference : Boolean = false) : void
{
ed.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
public function dispatchEvent(event : Event) : Boolean
{
return ed.dispatchEvent(event);
}
public function hasEventListener(type : String) : Boolean
{
return ed.hasEventListener(type);
}
public function removeEventListener(type : String, listener : Function, useCapture : Boolean = false) : void
{
return ed.removeEventListener(type, listener, useCapture);
}
public function willTrigger(type : String) : Boolean
{
return ed.willTrigger(type);
}
}
EventDispatcherに(委譲型)アダプターパターンを適用するという意味です。MoNoQLoREATOR さんが書きました:ありがとうございます。よくわかりました。
ところで、アダプトとは何を指しているのですか?継承とは違うのですか?
// package等略
interface Registerable
{
public function registerEventFunction(type : String, listener : function) : void;
public function unregisterEventFunction(type : String, listener : function) : void;
public function dispatchEvent(event : Event) : Boolean;
}
public class ConcreteRegisterable /*extends 何か*/ implements IEventDispatcher, Registerable
{
private var ed : EventDispatcher = new EventDispatcher(this);
// Registerableの実装
public function registerEventFunction(type : String, listener : function) : void
{
ed.addEventListener(type, listener, true, 0, false);
}
public function unregisterEventFunction(type : String, listener : function) : void
{
ed.removeEventListener(type, listener, false);
}
public function dispatchEvent(event : Event) : Boolean
{
return ed.dispatchEvent(event);
}
// IEventListenerの実装
public function addEventListener(type : String, listener : function, useCapture : Boolean = true, priority : int = 0, useWeakReference : Boolean = false) : void
{
ed.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
public function hasEventListener(type : String) : Boolean
{
return ed.hasEventListener(type);
}
public function removeEventListener(type : String, listener : Function, useCapture : Boolean = false) : void
{
return ed.removeEventListener(type, listener, useCapture);
}
public function willTrigger(type : String) : Boolean
{
return ed.willTrigger(type);
}
}