チェンジセット 3650

差分発生行の前後
無視リスト:
コミット日時:
2010/03/31 00:19:25 (3 年前)
コミッタ:
hkrn
ログメッセージ:

externalize parameters

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/gunyarapaint/branches/gunyarapaint/air/src/PlayerDelegate.mxml

    r3644 r3650  
    44    xmlns:s="library://ns.adobe.com/flex/spark"  
    55    xmlns:mx="library://ns.adobe.com/flex/halo" 
    6     initialize="init(event)" width="520" height="120" 
     6    applicationComplete="onApplicationComplete(event)" width="520" height="120" 
    77    currentState="loaded" xmlns:mx1="library://ns.adobe.com/flex/mx"> 
    88    <s:layout> 
     
    2222            import flash.utils.ByteArray; 
    2323             
     24            import mx.controls.Alert; 
    2425            import mx.events.FlexEvent; 
     26            import mx.utils.Base64Decoder; 
    2527             
    2628            import org.libspark.gunyarapaint.framework.Painter; 
     
    3032            import spark.core.SpriteVisualElement; 
    3133             
    32             //m_parameters.oelogUrl = "http://dic.nicovideo.jp/oelog/130710"; 
    33             //m_parameters.oelogUrl = "http://dic.nicovideo.jp/oelog/131293"; 
    34             //m_parameters.baseImgUrl = "http://dic.nicovideo.jp/oekaki_layers/130844"; 
    35             //m_parameters.baseImgInfoUrl = "http://dic.nicovideo.jp/oekaki_info/130844"; 
    36              
    37             //m_parameters.oelogUrl = "http://dic.nicovideo.jp/oelog/28741"; 
    38             //m_parameters.baseImgUrl = "http://dic.nicovideo.jp/oekaki_layers/28654"; 
    39             //m_parameters.baseImgInfoUrl = "http://dic.nicovideo.jp/oekaki_info/28654"; 
    40              
    41             private function init(event:FlexEvent):void 
    42             { 
    43                 versionLabel.text = Painter.PAINTER_VERSION_STRING; 
    44                 m_parameters = parameters; 
    45                 m_parameters.oelogUrl = "http://dic.nicovideo.jp/oelog/28778"; 
    46                 var loader:URLLoader = new URLLoader(); 
    47                 addErrorHandlers(loader); 
    48                 loader.addEventListener(Event.COMPLETE, loadLogBytes); 
    49                 loader.dataFormat = URLLoaderDataFormat.BINARY; 
    50                 loader.load(new URLRequest(m_parameters.oelogUrl)); 
    51             } 
    52              
    53             private function loadLogBytes(event:Event):void 
     34            private function onApplicationComplete(event:FlexEvent):void 
     35            { 
     36                var appDir:File = File.applicationDirectory; 
     37                var config:File = appDir.resolvePath("config.xml"); 
     38                var stream:FileStream = new FileStream(); 
     39                try { 
     40                    stream.open(config, FileMode.READ); 
     41                    m_params = XML(stream.readUTFBytes(config.size)).player; 
     42                } 
     43                catch (e:Error) { 
     44                    Alert.show(e.message); 
     45                } 
     46                finally { 
     47                    stream.close(); 
     48                } 
     49                if (m_params.file.@enabled == "true") { 
     50                    var log:File = appDir.resolvePath(String(m_params.file)); 
     51                    try { 
     52                        stream.open(log, FileMode.READ); 
     53                        var decoder:Base64Decoder = new Base64Decoder(); 
     54                        decoder.decode(stream.readUTFBytes(log.size)); 
     55                        var bytes:ByteArray = decoder.toByteArray(); 
     56                        bytes.endian = Endian.BIG_ENDIAN; 
     57                        bytes.inflate(); 
     58                        m_data = bytes.readObject(); 
     59                        createPlayer(); 
     60                        start(); 
     61                    } 
     62                    catch (e:Error) { 
     63                        Alert.show(e.message); 
     64                    } 
     65                    finally { 
     66                        stream.close(); 
     67                    } 
     68                } 
     69                else { 
     70                    var loader:URLLoader = new URLLoader();  
     71                    var uri:String = m_params.uri.data + "/" + m_params.id; 
     72                    addLoaderEvents(loader, onLoadDataFromHTTP); 
     73                    loader.dataFormat = URLLoaderDataFormat.BINARY; 
     74                    loader.load(new URLRequest(uri)); 
     75                } 
     76            } 
     77             
     78            private function onLoadDataFromHTTP(event:Event):void 
    5479            { 
    5580                var loader:URLLoader = URLLoader(event.target); 
    56                 loader.removeEventListener(Event.COMPLETE, loadLogBytes); 
     81                removeLoaderEvents(loader, onLoadDataFromHTTP); 
    5782                m_data = ByteArray(loader.data); 
    5883                m_data.endian = Endian.BIG_ENDIAN; 
    5984                m_data.uncompress(); 
    60                 if (m_parameters.baseImgInfoUrl) { 
     85                if (int(m_params.base) > 0) { 
     86                    var uri:String = m_params.uri.info + "/" + m_params.base; 
     87                    addLoaderEvents(loader, onLoadMetadata); 
    6188                    loader.dataFormat = URLLoaderDataFormat.TEXT; 
    62                     loader.addEventListener(Event.COMPLETE, loadMetaData); 
    63                     loader.load(new URLRequest(m_parameters.baseImgInfoUrl)); 
     89                    loader.load(new URLRequest(uri)); 
    6490                } 
    6591                else { 
    66                     loadAndResizeWindow(); 
     92                    createPlayer(); 
    6793                    start(); 
    6894                } 
    6995            } 
    7096             
    71             private function loadMetaData(event:Event):void 
     97            private function onLoadMetadata(event:Event):void 
    7298            { 
    7399                var loader:URLLoader = URLLoader(event.target); 
    74                 removeErrorHandlers(loader); 
    75                 loader.removeEventListener(Event.COMPLETE, loadMetaData); 
     100                removeLoaderEvents(loader, onLoadMetadata); 
     101                loader.removeEventListener(Event.COMPLETE, onLoadMetadata); 
    76102                m_metadata = JSON.decode(String(loader.data)); 
    77                 if (m_parameters.baseImgUrl) { 
    78                     var l:Loader = new Loader(); 
    79                     addErrorHandlers(l.contentLoaderInfo)
    80                     l.contentLoaderInfo.addEventListener(Event.COMPLETE, loadLayerImage); 
    81                     l.load(new URLRequest(m_parameters.baseImgUrl)); 
     103                if (int(m_params.base) > 0) { 
     104                    var newLoader:Loader = new Loader(); 
     105                    var uri:String = m_params.uri.layer + "/" + m_params.base
     106                    addLoaderEvents(newLoader.contentLoaderInfo, onLoadLayers); 
     107                    newLoader.load(new URLRequest(uri)); 
    82108                } 
    83109                else { 
     
    86112            } 
    87113             
    88             private function loadLayerImage(event:Event):void 
     114            private function onLoadLayers(event:Event):void 
    89115            { 
    90116                var loader:LoaderInfo = LoaderInfo(event.target); 
    91                 removeErrorHandlers(loader); 
    92                 loader.removeEventListener(Event.COMPLETE, loadLayerImage); 
     117                removeLoaderEvents(loader, onLoadLayers); 
     118                createPlayer(); 
    93119                m_layers = Bitmap(loader.content).bitmapData; 
    94                 loadAndResizeWindow(); 
    95120                m_player.load(m_layers, m_metadata); 
    96121                start(); 
    97122            } 
    98123             
     124            private function createPlayer():void 
     125            { 
     126                m_player = Player.create(m_data); 
     127                m_player.speed = speedSlider.value; 
     128                m_player.addEventListener(PlayerEvent.FINISHED, onPlayerFinished); 
     129                m_player.addEventListener(PlayerEvent.UPDATED, onPlayerUpdate); 
     130                progress.maximum = m_player.count; 
     131                height += m_player.height + canvasGroup.x; 
     132                canvasGroup.height = m_player.height; 
     133                canvasGroup.x = (canvasGroup.width - m_player.width) >> 1; 
     134            } 
     135             
    99136            private function handleIOError(event:IOErrorEvent):void 
    100137            { 
    101                 removeErrorHandlers(EventDispatcher(event.target)); 
    102                 trace(event); 
     138                removeLoaderEvents(EventDispatcher(event.target)); 
     139                Alert.show(event.text); 
    103140            } 
    104141             
    105142            private function handleSecurityError(event:SecurityErrorEvent):void 
    106143            { 
    107                 removeErrorHandlers(EventDispatcher(event.target)); 
    108                 trace(event); 
    109             } 
    110              
    111             private function update(event:PlayerEvent):void 
     144                removeLoaderEvents(EventDispatcher(event.target)); 
     145                Alert.show(event.text); 
     146            } 
     147             
     148            private function addLoaderEvents(ed:EventDispatcher, onComplete:Function):void 
     149            { 
     150                ed.addEventListener(IOErrorEvent.IO_ERROR, handleIOError); 
     151                ed.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError); 
     152                ed.addEventListener(Event.COMPLETE, onComplete); 
     153            } 
     154             
     155            private function removeLoaderEvents(ed:EventDispatcher, onComplete:Function = null):void 
     156            { 
     157                ed.removeEventListener(IOErrorEvent.IO_ERROR, handleIOError); 
     158                ed.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError); 
     159                if (onComplete != null) 
     160                    ed.removeEventListener(Event.COMPLETE, onComplete); 
     161            } 
     162             
     163            private function onPlayerUpdate(event:PlayerEvent):void 
    112164            { 
    113165                progress.setProgress(m_player.position, m_player.count); 
    114166            } 
    115167             
    116             private function finished(event:PlayerEvent):void 
     168            private function onPlayerFinished(event:PlayerEvent):void 
    117169            { 
    118170                //m_player.load() 
     
    120172            } 
    121173             
    122             private function stop(event:MouseEvent):void 
     174            private function onPlayerStop(event:MouseEvent):void 
    123175            { 
    124176                m_player.pause(); 
     
    126178            } 
    127179             
    128             private function play(event:MouseEvent):void 
     180            private function onPlayerPlay(event:MouseEvent):void 
    129181            { 
    130182                start(); 
    131183            } 
    132184             
    133             private function updateSpeed(event:Event):void 
     185            private function onUpdateSpeed(event:Event):void 
    134186            { 
    135187                var slider:HSlider = HSlider(event.target); 
     
    145197            } 
    146198             
    147             private function loadAndResizeWindow():void 
    148             { 
    149                 m_player = Player.create(m_data); 
    150                 m_player.speed = 500; 
    151                 m_player.addEventListener(PlayerEvent.FINISHED, finished); 
    152                 m_player.addEventListener(PlayerEvent.UPDATED, update); 
    153                 progress.maximum = m_player.count; 
    154                 height += m_player.height + canvasGroup.x; 
    155                 canvasGroup.height = m_player.height; 
    156                 canvasGroup.x = (canvasGroup.width - m_player.width) >> 1; 
    157             } 
    158              
    159199            private function clearCurrentCanvas():void 
    160200            { 
     
    165205            } 
    166206             
    167             private function addErrorHandlers(ed:EventDispatcher):void 
    168             { 
    169                 ed.addEventListener(IOErrorEvent.IO_ERROR, handleIOError); 
    170                 ed.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError); 
    171             } 
    172              
    173             private function removeErrorHandlers(ed:EventDispatcher):void 
    174             { 
    175                 ed.removeEventListener(IOErrorEvent.IO_ERROR, handleIOError); 
    176                 ed.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError); 
    177             } 
    178              
    179207            private var m_player:Player; 
    180208            private var m_data:ByteArray; 
    181209            private var m_metadata:Object; 
    182210            private var m_layers:BitmapData; 
    183             private var m_parameters:Object; 
     211            private var m_params:XMLList; 
    184212        ]]> 
    185213    </fx:Script> 
     
    194222    </fx:Declarations> 
    195223    <s:Group id="controllers" x="10" y="10" width="500" height="72" height.loaded="82"> 
    196         <s:Button x="10" y="10" label="再生" id="playButton" enabled.playing="true" enabled.loaded="false" click.stopped="play(event)" click.playing="stop(event)" click.finished="play(event)" label.playing="停止"/> 
    197         <s:HSlider width="273" height="12" x="88" y="14" id="speedSlider" liveDragging.loaded="false" minimum="1" maximum="500" stepSize="20" change="updateSpeed(event)" enabled.loaded="false"/> 
    198         <s:Label x="369" y="10" width="117" height="21" id="versionLabel" fontSize="18" verticalAlign.loaded="middle" textAlign="right"/> 
     224        <s:Button x="10" y="10" label="再生" id="playButton" enabled.playing="true" enabled.loaded="false" click.stopped="onPlayerPlay(event)" click.playing="onPlayerStop(event)" click.finished="onPlayerPlay(event)" label.playing="停止"/> 
     225        <s:HSlider width="273" height="12" x="88" y="14" id="speedSlider" liveDragging.loaded="false" minimum="1" maximum="500" stepSize="20" value="20" change="onUpdateSpeed(event)" enabled.loaded="false"/> 
     226        <s:Label x="369" y="10" width="117" height="21" id="versionLabel" fontSize="18" verticalAlign.loaded="middle" textAlign="right" text="{Painter.PAINTER_VERSION_STRING}"/> 
    199227        <mx1:ProgressBar x="10" y="39" width="480" id="progress" enabled.loaded="false" indeterminate.loaded="true" label.loaded="読み込み中..." height="33" label.playing="%3%% completed (%1 of %2 frames)" mode="manual" label.finished="100%% completed (%1 of %2 frames)" label.stopped="%3%% completed (%1 of %2 frames)" height.loaded="33"/> 
    200228    </s:Group>