データ生成モードに適切に設定されたNetStreamがあります...すべてが正常に機能し、次のようなことを行うとonSeekPoint()イベントが発生します。
例1
public function setupStream() {
netStream.client = {};
netStream.client.onSeekPoint = this.onSeekPoint;
netStream.client.onMetaData = this.onMetaData;
}
public function onSeekPoint(... args) {...}
public function onMetaData(... args) {...}
ただし、すべてをその親クラスに保持するのではなく、そのonSeekPointを持つクライアント用の新しいクラスを作成する必要があります。動作しません。不思議なことに、onMetaDataコールバックは...次のようなものです。
例2
package {
public class CustomClient {
public function CustomClient() {
}
public function onSeekPoint(... args) {...}
public function onMetaData(... args) {...}
}
}
public function setupStream() {
var myClient:CustomClient = new CustomClient();
netStream.client = CustomClient;
}
見逃した小さな問題があるかもしれないと思いましたが、本当に驚いたのは、これが完全に正しく機能することです...
例3
package {
public class CustomClient {
public function CustomClient() {
}
public function onSeekPoint(... args) {...}
public function onMetaData(... args) {...}
}
}
public function setupStream() {
var myClient:CustomClient = new CustomClient();
netStream.client = {};
netStream.client.onSeekPoint = myClient.onSeekPoint;
netStream.client.onMetaData = myClient.onMetaData
}
「壊れていないのなら直さないで」と思うかもしれませんが、わからないコードを手放すのが少し心配です。 ;)
私の質問は次のとおりです。
- 2番目の例がseekPointsで機能しないのはなぜですか?
- では、なぜ2番目の例がmetaDataで機能するのでしょうか。
- 3番目の例ですべてが修正されるのはなぜですか?
編集:不明な場合は、さまざまなクラスが別々のファイルに正しく含まれているなどです。これらは、ダイジェストを容易にするために、ここの例で結合されています。