有了 XML 电影列表,就可以创建一个 Flex 应用程序,用电影列表来扩展 simplemovie.mxml 播放器了。这个升级后的 Flex 应用程序如清单 7 所示。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="movieXmlData.send()"> <mx:HTTPService method="get" url="http://localhost:8080/movies.php" id="movieXmlData" result="onGetMovies( event )" /> <mx:Script> import mx.rpc.events.ResultEvent; import mx.controls.VideoDisplay; import mx.controls.List; import mx.rpc.http.HTTPService; import mx.collections.ArrayCollection; [Bindable] private var movies : ArrayCollection = new ArrayCollection(); public function onGetMovies( event : ResultEvent ) : void { var firstMovie : String = event.result.movies.movie[0].source.toString(); videoPlayer.source = firstMovie; movies = event.result.movies.movie; movieList.selectedIndex = 0; } public function onPrevious() : void { if ( movieList.selectedIndex == 0 ) movieList.selectedIndex = movies.length - 1; else movieList.selectedIndex -= 1; videoPlayer.source = this.movieList.selectedItem.source.toString(); } public function onPlay() : void { videoPlayer.source = this.movieList.selectedItem.source.toString(); videoPlayer.play(); } public function onNext() : void { if ( movieList.selectedIndex >= ( movies.length - 1 ) ) movieList.selectedIndex = 0; else movieList.selectedIndex += 1; videoPlayer.source = this.movieList.selectedItem.source.toString(); } public function onChange() : void { videoPlayer.source = this.movieList.selectedItem.source.toString(); } </mx:Script> <mx:HBox width="100%" paddingLeft="10" paddingTop="10" paddingRight="10"> <mx:VBox> <mx:VideoDisplay width="400" height="300" id="videoPlayer" complete="onNext()" /> <mx:HBox width="100%" horizontalAlign="center"> <mx:Button label="<<" click="onPrevious()" /> <mx:Button label="Play" click="onPlay()" /> <mx:Button label=">>" click="onNext()" /> </mx:HBox> </mx:VBox> <mx:List width="100%" height="340" id="movieList" dataProvider="{movies}" change="onChange()" labelField="title"></mx:List> </mx:HBox> </mx:Application>