フォーラム一覧 - トピック一覧 ActionScript 3.0
ローカルのXMLにアクセス | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | トピック |
|---|---|
| AKIRA | 投稿日時: 2006-9-11 10:01 |
ご主人様 ![]() ![]() 登録日: 2006-3-20 居住地: 東京都千代田区 投稿: 119 |
ローカルのXMLにアクセス 毎度お世話になってます、AKIRAです。
今回のお題はひどく単純です。 HTTPServiceを利用してXMLにアクセスを行うというものです。 以下はソースです。 MainFrame.mxml <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" initialize="{initApp()}" creationComplete="{creationCompleted()}" backgroundGradientColors="[#0000a0, #00ffff]" backgroundGradientAlphas="[0.23, 0.09]"> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.managers.PopUpManager; import org.popup.ImagePopup; import mx.rpc.soap.errors.ClientInputError; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; // import mx.rpc.http.mxml.HTTPService; import mx.collections.ArrayCollection; //メニューリンクデータ [Bindable] private var _MenuData:ArrayCollection = new ArrayCollection([ {label:"Image", url:"Image" ,level:"0" ,enabled:false, dispFlg:true}, {label:"Video", url:"Video" ,level:"0" ,enabled:false, dispFlg:true}, {label:"Maintenance",url:"Mainte" ,level:"0" ,enabled:false, dispFlg:true}, {label:"Logout",url:"Logout" ,level:"0" ,enabled:false, dispFlg:true} ]); // [Bindable] // private var _catalogDataService:HTTPService; private function clickLogin():void { currentState = "imageContents"; AppMenueBar.visible = true; } private function initApp():void { } private function creationCompleted():void { // _catalogDataService = new HTTPService(); // _catalogDataService.url = "xml/catalog.xml"; // _catalogDataService.method = "GET"; // _catalogDataService.addEventListener(ResultEvent.RESULT,httpResultEventListner); // _catalogDataService.addEventListener(FaultEvent.FAULT,httpFaultEventListner); // _catalogDataService.send(); catalogService.send(); currentState = "login"; AppMenueBar.visible = false; } private function httpResultEventListner(obj:Object):void { // var obj:Object = _catalogDataService.lastResult; var obj:Object = catalogService.lastResult; } private function httpFaultEventListner(obj:Object):void { } public function clickMenu(obj:Object):void { switch(obj.index) { case 0: currentState = "imageContents"; break; case 1: currentState = "videoContents"; break; case 2: break; case 3: this.creationCompleted(); break; } } public function onMouseClickForImage(imageName:String):void { var imagePopup:ImagePopup = new ImagePopup(); imagePopup.setImageName(imageName); PopUpManager.addPopUp(imagePopup,this,true); } public function onMouseClickForDataGrid(obj:Object):void { var imageName:String = obj.image; this.onMouseClickForImage(imageName); } public function onMouseClickForSearch():void { Alert.show("検索を行います。"); } public function onMouseClickForOption():void { Alert.show("Option設定を行います。"); } ]]> </mx:Script> <mx:HTTPService id="catalogService" useProxy="false" url="xml/catalog.xml" result="httpResultEventListner(event)" /> <!-- メニューバー --> <mx:ApplicationControlBar id="AppMenueBar" width="100%" height="45" fillColors="[#000066, #0000ff]" fillAlphas="[0.7, 0.0]" horizontalGap="0" verticalAlign="middle" > <mx:LinkBar enabled="true" id="menuBar" itemClick="{clickMenu(event)}" fontSize="16" horizontalAlign="left" horizontalGap="4" dataProvider="{_MenuData}" /> </mx:ApplicationControlBar> <mx:Canvas id="contents" width="100%" height="100%"/> <mx:states> <mx:State name="login"> <mx:AddChild relativeTo="{contents}"> <!-- ログインボックス --> <mx:VBox id="loginbox" width="50%" horizontalAlign="center" backgroundColor="#FFFFFF" backgroundAlpha="0.8" x="251" y="26"> <!-- タイトル --> <mx:Label id="lbl1" fontSize="27" text="Welcome" fontStyle="normal" color="#FFFFFF"/> <mx:Label id="lbl2" fontSize="40" text="Image Library" color="#ffffff" fontWeight="bold"/> <mx:Spacer height="20" /> <mx:Spacer height="10" /> <mx:VBox horizontalAlign="center"> <mx:HBox textAlign="right" width="200"> <mx:Label id="lbl3" fontSize="15" text="UserID : " width="100"/> <mx:TextInput id="userId" width="80" /> </mx:HBox> <mx:HBox textAlign="right" width="200"> <mx:Label id="lbl4" fontSize="15" text="Password : " width="100"/> <mx:TextInput id="password" width="80" /> </mx:HBox> <mx:Spacer height="20" /> <mx:Button id="loginBtn" label="Login" fontSize="15" fillColors="[#0000CC,#0000FF]" fillAlphas="[0.6,0.8]" color="#FFFFFF" click="{clickLogin();}"/> <mx:Spacer height="20" /> </mx:VBox> </mx:VBox> </mx:AddChild> </mx:State> <mx:State name="imageContents"> <mx:AddChild relativeTo="{contents}"> <mx:TabNavigator x="10" y="133" width="100%" height="100%" id="tabnavi" backgroundColor="#AFEEEE" fillColors="[#0000ff, #0000ff]" fillAlphas="[1.0, 1.0]" borderStyle="none" borderColor="#0000ff" alpha="1.0" cornerRadius="9"> <mx:Box label="Thumbnail" width="100%" height="100%" backgroundColor="#0000ff"> <!--<mx:TileList id="thumbnailList" dataProvider="{_catalogDataService.lastResult.catalog.product}" width="100%" height="100%" backgroundColor="#0000FF">--> <mx:TileList id="thumbnailList" dataProvider="{catalogService.lastResult.catalog.product}" width="100%" height="100%" backgroundColor="#0000FF"> <mx:itemRenderer> <mx:Component> <mx:VBox width="120" height="120" verticalScrollPolicy="off" horizontalScrollPolicy="off" > <mx:Image source="{data.image}" width="100" height="100" click="{parentDocument.onMouseClickForImage(data.image);}"/> <mx:Label text="{data.archive}" /> </mx:VBox> </mx:Component> </mx:itemRenderer> </mx:TileList> </mx:Box> <mx:Box label="Text List" width="100%" height="100%" backgroundColor="#0000ff"> <!--<mx:DataGrid id="productList" dataProvider="{_catalogDataService.lastResult.catalog.product}" itemClick="{onMouseClickForDataGrid(productList.selectedItem)}" >--> <mx:DataGrid id="productList" dataProvider="{catalogService.lastResult.catalog.product}" itemClick="{onMouseClickForDataGrid(productList.selectedItem)}" > <mx:columns> <mx:DataGridColumn headerText="No" dataField="no"/> <mx:DataGridColumn headerText="Archive" dataField="archive"/> <mx:DataGridColumn headerText="Car" dataField="car"/> <mx:DataGridColumn headerText="FileId" dataField="fileid"/> <mx:DataGridColumn headerText="Date" dataField="date"/> <mx:DataGridColumn headerText="Other1" dataField="other1"/> <mx:DataGridColumn headerText="Other2" dataField="other2"/> </mx:columns> </mx:DataGrid> </mx:Box> </mx:TabNavigator> </mx:AddChild> <mx:AddChild relativeTo="{contents}" position="lastChild"> <mx:Canvas id="HeaderCanvas" width="100%" height="30%"> <mx:HBox x="10" y="42" width="120" horizontalAlign="center" verticalAlign="middle" backgroundColor="#c0c0c0"> <mx:Label text="Archive" fontWeight="bold" fontSize="12"/> </mx:HBox> <mx:TextInput x="138" y="42" id="searchInputText"/> <mx:Button x="39" y="91" label="Search" width="91" id="searchBtn" click="{onMouseClickForSearch()}" fontSize="12" fillColors="[#ffff00, #ffff00]" fillAlphas="[1.0, 1.0]" cornerRadius="7"/> <mx:Button x="171" y="92" label="Option" cornerRadius="7" fontSize="12" click="{onMouseClickForOption()}" id="optionBtn" fillColors="[#c0c0c0, #80ffff]" fillAlphas="[0.72, 0.73]" width="98"/> </mx:Canvas> </mx:AddChild> </mx:State> <mx:State name="videoContents"> <mx:AddChild relativeTo="{contents}"> </mx:AddChild> </mx:State> <mx:State name="maintenanceContents"> <mx:AddChild relativeTo="{contents}"> </mx:AddChild> </mx:State> </mx:states> </mx:Application> xmlディレクトリにあるcatalog.xmlにアクセスし、 その結果を表示するというものですが、 このソースを作成したワークスペースで コンパイルをした結果、SWFファイルが出力されるわけですが、 その出力結果を別のところにコピーする (例:c:/workspace/flex2sample/binを c:/binにコピーするなど)し、そのSWFファイルを 実行しようとすると、 「file:///C:/bin/MainFrame.swf はローカルリソース xml/catalog.xml にアクセスできません。ローカルファイルシステムの SWF および信頼されているローカル SWF ファイルのみがローカルリソースにアクセスできます。" faultCode="InvokeFailed" faultDetail="null"]」 とダイアログが表示され、怒られてしまいます。 これによりローカルのXMLファイルにアクセスできませんでした。 これをアクセス可能にするにはどうすればよいのでしょうか? どなたかご存知の方、いらっしゃいましたら、 ご教授くださいませ。 よろしくお願いいたします。m(__)m |
| bioflexer | 投稿日時: 2006-9-11 12:40 |
一見さん ![]() ![]() 登録日: 2006-8-2 居住地: 投稿: 1 |
Re: ローカルのXMLにアクセス 私は以下に記載されていた.cfg ファイルを配置する方法でアクセスできました。
http://www.adobe.com/jp/devnet/flashplayer/articles/fp8_security.html |
| AKIRA | 投稿日時: 2006-9-11 12:55 |
ご主人様 ![]() ![]() 登録日: 2006-3-20 居住地: 東京都千代田区 投稿: 119 |
Re: ローカルのXMLにアクセス bioflexerさま、早速のご教授、ありがとうございます。m(__)m
FlashPlayerの設定ファイルを作成して それを参照させるということですね。 これを作成したらローカルXMLファイルを読み込めました。 しかし、この方法ですと、 スタンドアローンなSWFのアプリケーションは、 すべてこの設定ファイルが必要になると思いますが・・・。 そのあたり、どうすれば解決するんでしょうか? どなたかご存知の方、いらっしゃいましたら、 ご教授くださいませ。 よろしくお願いいたします。m(__)m |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |