Flex2 からやっている自分ですら相当苦労しました。ま、でも一日で済んだ のは奇跡的かもしれませんが、Flex4 の日本語リファレンスのダウンロード リンクすら世の中から消えている始末です。 酷すぎ。 ▼ PC にあるのと中身を比較していませんが・・・・ http://help.adobe.com/ja_JP/Flex/4.0/Flex_4_docs.zip![]()
<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark" initialize="initData();" nativeDragEnter="Check_DragEnter(event)" nativeDragDrop="Check_DropFile(event)" usePreloader="true" showStatusBar="false" titleIcon="{imgSmile}" title="エクスプローラから flv をドラッグ・ドロップできます" skinClass="spark.skins.spark.SparkChromeWindowedApplicationSkin" > <fx:Style> @namespace s "library://ns.adobe.com/flex/spark"; s|Panel { backgroundColor:black; } </fx:Style> <fx:Script> <![CDATA[ import spark.components.*; import spark.events.*; import org.osmf.events.*; import org.osmf.media.*; import flash.filesystem.*; import flash.events.Event; import mx.controls.Alert; import mx.logging.targets.*; import mx.logging.*; // import spark.skins.spark.*; [Bindable] [Embed("smile.png")] private static var imgSmile:Class; private var nSize:int = 1; private var rootObject:WindowedApplication; private var nativeMenu:ContextMenu; private var logger:ILogger = Log.getLogger("MyLogger"); // ********************************************************* // アプリケーションの初期化 // ********************************************************* public function initData():void { var traceTarget:TraceTarget = new TraceTarget(); traceTarget.level = LogEventLevel.ALL; traceTarget.filters = ["*"]; traceTarget.includeDate = false; traceTarget.includeTime = false; traceTarget.includeLevel = false; traceTarget.includeCategory = false; Log.addTarget(traceTarget); // this.setStyle( "skinClass", SparkChromeWindowedApplicationSkin ); // メッセージ logger.info( "initData() が実行されました" ); // 再生イベントの発生間隔 // myVid.playheadUpdateInterval = 1; // プログレスバーの初期化 progressBar.setProgress(0, 100); // Mainw.xml の値を変更 // this.height = 600; // 初期ボリューム myVid.volume = 0.7; // ************************************************* // コンテキストメニュー定義 // ************************************************* rootObject = WindowedApplication(mx.core.FlexGlobals.topLevelApplication) nativeMenu = new ContextMenu(); nativeMenu.hideBuiltInItems(); addContextMenu( "x 1", function():void { changeSize(1); } ); addContextMenu( "x 2", function():void { changeSize(2); } ); addContextMenu( "x 0.5", function():void { changeSize(3); } ); addContextMenu( "ベースを最大化", function():void { myVid.stage.displayState = 'fullScreen'; } ); addContextMenu( "ベースを標準", function():void { myVid.stage.displayState = 'normal'; } ); rootObject.contextMenu = nativeMenu; } // ********************************************************* // コンテキストメニュー追加 // ********************************************************* public function addContextMenu( label:String, listener:Function ):void { var menuItem:ContextMenuItem; menuItem = new ContextMenuItem(label); menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,listener); nativeMenu.customItems.push(menuItem); } // ********************************************************* // 外部からドラッグ開始 // ********************************************************* private function Check_DragEnter(e:NativeDragEvent):void { var clip:Clipboard = e.clipboard; if ( clip.hasFormat( ClipboardFormats.FILE_LIST_FORMAT ) ) { NativeDragManager.acceptDragDrop(this); } } // ********************************************************* // 外部からドロップ // ********************************************************* private function Check_DropFile(e:NativeDragEvent):void { var clip:Clipboard = e.clipboard; var file_list:Array; file_list = clip.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array; var str:String = file_list[0].nativePath; var part:Array = str.split("."); var len:int = part.length; var ext:String = (part[len-1]).toUpperCase(); if ( ext == "MP4" || ext == "FLV" ) { myVid.source = file_list[0].nativePath; // myVid.load(); progressBar.setProgress(0, 100); } else { Alert.show( "flv か mp4 を使用して下さい" ); } } // ********************************************************* // ストップ( リセット )処理 // ********************************************************* public function play_Reset():void { // STOP ボタンを使用した場合は巻き戻すが、 // 最後まで表示した場合は巻き戻さない myVid.autoRewind = true; myVid.stop(); myVid.autoRewind = false; } // ********************************************************* // シーク // ********************************************************* private function setTime( e:MouseEvent ):void { myVid.seek( ( e.localX * myVid.duration )/ progressBar.width ); logger.info("seek"); } // ********************************************************* // サイズ変更 // ********************************************************* private function changeSize( nSize:int ):void { switch( nSize ) { case 1: myVid.width = myVid.videoObject.videoWidth; myVid.height = myVid.videoObject.videoHeight; break; case 2: myVid.width = myVid.videoObject.videoWidth * 2; myVid.height = myVid.videoObject.videoHeight * 2; break; case 3: myVid.width = myVid.videoObject.videoWidth / 2; myVid.height = myVid.videoObject.videoHeight / 2; break; } } // ********************************************************* // 再生ヘッド位置の表示 // ********************************************************* private function currentTimeChange( e:TimeEvent ):void { progressBar.setProgress( e.time, e.currentTarget.duration ); } // ********************************************************* // スライダー変更イベント // ********************************************************* private function changeVolume( ):void { myVid.volume = hSlider.value; } // ********************************************************* // スライダー変更イベント // ********************************************************* private function readyVideo( ):void { try { changeSize(1); this.height = myVid.videoObject.videoHeight + 200; if ( this.width < myVid.videoObject.videoWidth ) { this.width = myVid.videoObject.videoWidth + 10; } } catch(e:*){ } } ]]> </fx:Script> <s:Panel title="超シンプル flv プレーヤー" percentHeight="100" percentWidth="100" > <s:VGroup width="100%"> <s:HGroup> <s:Button label="Play" click="myVid.play();" width="60" /> <s:Button label="Pause" click="myVid.pause();" width="60" /> <s:Button label="Stop" click="play_Reset();" width="60" /> <s:HSlider id="hSlider" minimum="0" maximum="1" value="0.7" snapInterval="0.1" change="changeVolume();" /> </s:HGroup> <mx:ProgressBar id="progressBar" mode="manual" label="" width="100%" click="setTime(event)" visible="true" /> <s:VideoDisplay id="myVid" autoPlay="false" autoRewind="false" complete="progressBar.setProgress(100,100);" source="sample.mp4" currentTimeChange="currentTimeChange(event);" durationChange="readyVideo();" /> </s:VGroup> </s:Panel> </s:WindowedApplication>
Flex3 のコードも、記念にコメントで残しているところがあります。 mx を使わずに spark を使うように変えるところが基本ですが、よく もまあこんなに違うものにしてくれたなぁ・・・ というのが実感です。 それはまだしも、trace メソッドが動作しないのにはあきれました。 スキンの角を丸くできないし、@namespace 書かないとエラーになる し、Flex2 当時も結構苦労しましたが、経験無いと時間ばかりかかる ので必要無いならかかわらないほうがいいです。 ビルドは全て DOS ベースでやってます。Flex Builder は昔使った事 ありますが、最低だった印象しかありません。やめたほうがいいです。 もう少し整備したらビルドパッケージもリリースします。そうすれば、 誰でも簡単に片目つぶってでも作れるようになります。 前提としては、java が必要ですが、今の環境は1.7.0_01です。 あんのじょう、Java7 で問題が出ました。AIR のパッケージを作る adt でエラーが出ます。とりあえず、1.6.0_16 に変更しました。
|
【オワコンの最新記事】
- tiktok > Stable Diffusion : まあ、とにかく凄い今時の頂点系
- Windows 8.1 + Visual Studio 2013 + WebGL + Three.js v65
- Microsoft Visual Studio 2010 のエミュレータは localhost で PC にアクセスできてた。
- Windows Phone で Zune を終了しても実機デバッグはできる( つまり、カメラが使える )
- Windows Phone SDK 8.0 がリリースされました。高橋 忍氏のブログをチェックするといいと思います
- App クラスを介してページ間の参照 / Windows Phone(C#)
- 『Windows8(C#) 2ページテンプレート』で、2ページ目で HttpClient で JSON データをバインドする
- Windows8 の最新版で、C#のテンプレート(Windows ストア)で、ページを追加すると固まるというバグがあるので、テンプレートを作って回避しています。
- 黒子のバスケが始まるまでに Windows Phone の開発環境を作る
- AIR + Papervision3D でメタセコイアの 3D キャラを遊ぶサンプルパッケージ
- Windows8(JavaScript Metro Style 導入) 関連リンク
- Windows 8 Release Preview のコントロールパネルの Flash Player 設定マネージャ
- Windows8 の XMLHttpRequest の POST メソッドのテストの為に、超簡易掲示板を授業中に作成
- AIR+FLARToolkitサンプル開発キット / collada(dae)とメタセコイア(mqo)ローダ実装済
- AIR Flex4 で WEB カメラを最も簡単に実装する方法
- Windows8 + LiveSDK のサンプルコードの実行
- WindowsConsumerPreview やその他の環境で、Microsoft の Live SDK を試す為の情報
- Adobe AIR Flex をだれでも簡単に作成できるパッケージ : ★ 超シンプル FLV プレーヤー ★
- アプリケーションバーを追加する : Win8 Metro(JS)
- Spark のスキンを使った時のウインドウサイズ変更オペレーション : Adobe AIR Flex