script-onlyとは書き込み権限のことで、参考資料ではアクセス修飾子と呼ばれている。
のように書くためには、sourceの書き込み権限をpublicとかに変更する必要がある。ここを参照。なぜ保護されているかはわかっていない。
picture.mediaPlayer.media.source = "aaa.svg";
だがMediaクラスの変数であるsourceの書き込み権限は変えられないようだ。そこであとからファイルを変えたい場合は、URLを変えるのではなく、オブジェクトを変える。つまり次のような2行で書く。
var svg = Media { source : "aaa.svg" }
picture.mediaPlayer.media = svg;
(2010.7.17追記)と思ったら
picture.mediaPlayer.media = Media { source:"aaa.svg"}でいいか。他の変数はどうかと思って初めてMediaのAPIをまじまじと見ると、Track[]ってRead onlyなこれって何だろう? media毎に勝手に設定できるなら分かる気がするが、read onlyってことは、元は何になるのか? fxd,flv,mp4などのコンテナでtrack情報が取れるものは何かそうした情報が入ってくるということ? しょうがない、やってみるか。
(2010.7.20 追記)間に追記していると、文章が分断してどうしょうもないが。
とあるmp4のtracks.nameを見ると、"Audio Track"と"Video Track"の2つが入っていた。これは一体何だろう。自分で撮ったビデオをiMovieで書き出したものだと思うので、iMovieで書き出すときに実は何かトラック名を指定出来るか、固定的に設定されてしまうのか。今確認するのは億劫。
(2010.8.16修正) 正:Scene 誤:Stage
ついでに
それと
(2010.8.16追記-->)と思ったら、
var mmv = MediaView {
mediaPlayer : MediaPlayer {
media : Media {
source:"sample.mp4"
}
}
}
var ms = Stage {
title: "Application title #1"
}
ms.scene = Scene { width:100
height:100
content:mmv
}
mmv.mediaPlayer.play();
これだけだとwidth/heightは利かず、極小サイズで表示されるが、この後、
ms.width = 100;
ms.height = 100;
を追加すると、100x100で表示される。ちなみに
ms.width = 100;
ms.height = 100;
mmv.mediaPlayer.play();
の順でも大丈夫だった。
(<--2010.8.16追記)
APIリファレンスを見ると、Media.sourceはpublic-initのStringだが、
class XMedia extends Media {は出来るが、同じソースファイル内に書いている(packageを分けていない)ので、比較になっていないかもしれない。が、packageを分けるのが面倒な今。
override package public var source : String;
}は出来ない。package publicや単にpublicでも同じ。
class DumMedia {
public-init var source:String;
}
class XMedia extends DumMedia {
override public var source : String;
}
通常はStageのwidthとheightは設定せずに、Sceneのwidthとheightを設定するようにしています。
返信削除Sceneのwidth/heightを設定していないときは、AWTのFrameクラスのpackメソッドと同じ動作をしているようです。
skrbさん、コメントありがとうございます。
返信削除すみません、まずStageとScene、間違って書いていました。それから、再度確認したところ、Sceneの初期化時のheight/widthは利かず、後から変更すると利くようです(追記しました)。私が確認した範囲なので間違っていたらごめんなさいです。