問題タブ [avplayerview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
avplayerview - カスタム AVPlayerView: デフォルトで使用される初期化子を知っていますか?
標準の NSView イニシャライザ initWithFrame:(NSRect)frame; カスタムビューで呼び出されていません。シンプルなinitを試しましたが、これまでのところ何も呼び出されていません。また、 drawRect: メソッドは呼び出されません。では、AVPlayerView の初期化を傍受するにはどうすればよいでしょうか。
xcode - URL と AVPlayerView の奇妙な点 - パス文字列を使用してムービーを開くことができない
質問:windowDidLoad()
に挿入すると、このコードが機能しないのはなぜですか?
しかし、ダイアログピッカーを使用して同じパスで同じファイルを開くことができます(その後、呼び出された場合、ワンライナーは機能します)? URL または AVPlayerView について何か不足していますか? NSWindowController の目に見えないキャッシング? たぶん、私が見ることができないコーディングエラーですか?
設計:デフォルトでは、 を押すと、テキスト フィールドloadButton
から AVPlayerView を読み込もうとします。hardCodedPath
デフォルトの (ただし編集可能な) パス文字列 (例: /Users/joeblogs/Desktop/my.mp4) は、IB でハードコーディングされています。チェックボックスがオフの場合、useHardCodedFlag
代わりにファイル ピッカー ダイアログが使用されます。
テスト:
起動後、がオンのときにを
loadButton
押すと、URL を作成するために使用されます - を参照してください。デフォルトの URL パスが適切であることを確認しますが、AVPlayerView にはムービーの代わりにプレースホルダー (スラッシュ付きのムービー再生アイコン) が表示されるだけです。useHardCodedFlag
hardCodedPath
loadMovies()
useHardCodedFlag
次に、ファイル ピッカー ダイアログで同じファイルを無効にしてから選択すると、ムービーが完全に開き、選択した URL のパスが元のハードコードされたパスと同じであるとアプリが報告します。その時点で
useHardCodedFlag
、テキスト フィールドから AVPlayerView を有効にして読み込みます。元のウィンドウが既に閉じていても、新しいウィンドウでも正しく動作するようになりました。別の有効なパスをピッカーで最初に開くまで、別の有効なパスを貼り付けても失敗します (同じウィンドウまたは新規)。hardCodedPath
異なるムービーを持つ 2 つのウィンドウから始めて、コンテンツを交換することでムービーを交換し、各ウィンドウを有効にして
hardCodedPath
ヒットすることができます(少なくともウィンドウ レベルでは) キャッシュはありません。loadButton
useHardCodedFlag
概要:パス文字列から構築された URL を使用して AVPlayerView にムービーを読み込むことができますが、モーダル ダイアログ ピッカーからの URL を使用して (アプリケーションの起動後) 最初に開いた場合に限ります。なんで?
コアの ~ ダース行はfunc loadMovies()
一番上にありますが、見やすいように、WindowController 全体を含めます。これは定型的な macOS ドキュメント テンプレートに基づいて構築されており、他の機能 (開く、保存など) は追加されていません。