• ベストアンサー

FLEX SDK+MXMLで外部HTMLの読み込み、同一ページで表示

こんにちは。 FLEX SDK(3.0)+MXMLで、 外部HTMLを読み込み、同一 ページ内(特定のPanel,Canvas) に表示 することは、可能でしょうか。 navigateToURLという関数はありますが、 これは、次ページの読み替え、や、 新たなページ、インナーフレームを 開くのでやりたいこととは、異なります。 特定のPanelやCanvasに 読みたいと思っています。 これはAJAXでは、当然できていたこと (mypanel.load(url)などで できました) なので、FLEXでもできるのでは、 と思ったのですが、情報が ありません。 昔のFLASHのようにテキストデータを 読み込んで表示するとかしか、 方法がないのでしょうか。 よろしくお願いします。

  • rheda
  • お礼率69% (257/372)
  • Flash
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

> これはAJAXでは、当然できていたこと よくわかりませんが, それは AJAX でできていたのではなくて, ブラウザがHTMLを表示できていただけでしょう? ブラウザであれば何を使おうともHTMLを表示できます。 それがブラウザの本業ですから。 Flash はブラウザではないので,基本的にHTMLは表示できませんよ。 というか実際は表示できます。 こんな形では↓。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>○○</title> </head> <body> <p>□□</p> </body> </html> こういう形(このようなテキスト)でよければ,Flash で表示可能ですが, それをブラウザのように解釈して HTML として表示することはできません。 FlashPlayer はブラウザではありませんから。 仮にできたとしても, IE とも Netscape とも Opera とも FireFox とも Safari とも… 違う独特な形で表示されることは間違いありません。 それに HTML 内にJavaScriptを入れたものになったなど, 色々なものを入れた場合,FlashPlayer自体 が JavaScript なども実行させなければならなくなります。 それはセキュリティ面などでも無理でしょう。 また HTML の中に JPEG を表示させるまでは良いとしても, WMV とか RM とか MPEG とかを入れた場合, そこまで FlashPlayer がサポートしなければなりません。 どれだけ重い重いFlashPlayerになることか...。絶対無理ですね。 求めるものには限りがありません。 したがって, FlashPlayer は基本的に HTML を HTML としては解釈しない。 というスタイルで良いと思います。 そもそも Flash の中に何かを表示させるのに, 窮屈な "タグ" なんてものは必要ないのですし。 そもそも HTML が窮屈であるから Flash を使うのでしょう? 窮屈な HTML で良ければ Flash は必要ないかと。 以上のように書きましたが, Flash エリア内に穴を開けて, その穴に HTML を表示できれば良いなあと私も考えたことはあります。 エリアはFlash内なんだけど,実は外(中庭)みたいな感じ。 これだと, FlashPlayer が ブラウザの全機能とブラウザの持つプラグインを持つ必要がなくなります。 でも,それはHTMLの都合上(そういうタグがない)ので無理なのでしょうね。 (HTMLにレイヤーを作って Flash の上に CSS で表示させるとできるかも...(できないかも...)) テキストフィールド内の文字のレイアウトをするときに, 装飾程度でしたら,かなり限られたものですが,少しだけタグが使えます。 HTML のテキスト整形を使用する(Flash CS3 Professional) http://support.adobe.co.jp/faq/faq/qadoc.sv?231815+002+3 この辺が限度です。 決してHTMLを表示しているわけではありません。 文字の装飾や少しの画像の表示にタグが使えるだけです。

rheda
質問者

お礼

回答ありがとうございました。 せめて、同じディレクトリにある、 HTMLでも読み込めたら、 便利と思っていましたが、 無理みたいです。 (確かにブラウザになってしまいますし)。 それでも、一応あきらめはつきました、 タイトルとか、メニューの一部で 使いたいと思います。

その他の回答 (1)

noname#78739
noname#78739
回答No.2

AIRアプリケーションを作るなら。 HTMLLoader使えば、HTMLの読込み・表示はできます。 AIRはMacのSafariなどで使われている、 WebKitという描画エンジンを持っています。 そのため、普通に外部のWEBサイトをAIR内で表示することはできます。 http://livedocs.adobe.com/flex/3_jp/langref/index.html?flash/html/HTMLLoader.html&flash/html/class-list.html Flashの代わりにSWF出力するだけなら、無理でしょう。

参考URL:
http://hakuhin.hp.infoseek.co.jp/main/air/html_loader.html
rheda
質問者

お礼

回答ありがとうございます。 AIRアプリでなくても、 簡単なHTMLなら画像も含めて、 HTTPServiceオブジェクト (+htmlText)で 可能なことが分かりました。 スタイルシート等は解析できませんが、 古いタイプのHTML文書なら、 表示できるようです。

関連するQ&A

  • flexって何?

    adobeが出しているflexとはどのようなソフトでしょうか。 表示側のプラットフォームはflashで、サーバ側で動くコンパイル言語ということでいいのでしょうか。この場合のプログラミング言語とは、MXMLか、actionscriptかどちらなのでしょうか。 ざっくりいうと、AJAXのフラッシュ版?みたいなようなものですか?

  • PanelとCanvasの違いについて

    i-appliでちょっとしたアプリを作成する事になりただいま勉強中です。 初歩的な質問です。 高APIのPanelクラスと低APIのCanvasクラスの違いについて質問です。 まず、Panelにおいて、ラベルテキストの表示場所を設定するといったことはできるのでしょうか? PanelとCanvasは一緒には使用できないという事をネット上でみかけたのですが、 例を出すとCanvasにリストボックスは表示できないといったことでしょうか? Panelにgif画像を左端に表示してその同列上にテキストを表示し、下部にリストボックスを表示しようとしています。Canvasではこのような表示はできないと思いますが、かといってPanelだとCanvasのようにテキスト位置などを座標で指定するといった事が現状の知識では無理だと思うのですが、実際のところこのような場合、 どのように作成していけばいいのでしょうか?わかりにくいかもしれませんがよろしくお願い致します。

  • Flex3でビルドができない

    Flexの初心者です。 Flex Builder 3を起動してFlexスタートページから『簡単なRIAの作成』から『プロジェクトのダウンロード』クリックするとディスクがありませんというタイトルウィンドウが表示されException Processing Message c0000013 Parameters 764cbf7c 764cbf7c 764cbf7cとメッセージが表示されます。同様に、プロジェクト(mxmlファイル)をビルドする際も表示されてしまいます。クリーンブートなどもやりましたがうまくいかず、実際に何がいけないのか分からなく困っています。 分かる方教えて頂けると幸いです。よろしくお願いします

  • Javaアプレット コンポーネントの表示異常

    Javaアプレット コンポーネントの表示異常 不特定のPCでAWTのCanvasの表示がおかしくなる現象が起きます。 表示がおかしくなるPCのOSはWinXP SP3です。 JAVAは、1.6_19です。 現在、100台中2台ほど異常が起きるのを確認しています。 異常が起きるPCでは、必ず起きます。 現象は、Canvasの部分が、TVの砂嵐のようになります。まれに、OSの壁紙のような絵も出ます。 このアプレットの画面の構成は次のようになっています。 Canvas  ↓ADD Panel  ↓ADD ScrollPanel  ↓ADD Frame Canvasには、文字を999行表示しています。サイズでいうと16000ほど。 CanvasとPanelは同じサイズです。 PanelのサイズをCanvasより、100多くした事があるのですが、その時は異常がなくなりました。 しかし、10にしたらまた異常がでました。 ちなみにinsetsのサイズは全て0でした。 この障害の原因がまったく分らないのですが、何が考えられるのでしょうか?

    • ベストアンサー
    • Java
  • 非同期受信による自動ページの切り替えについて

    いつもお世話になっております。 今回、Ajaxを用いて特定のデータをサーバーが受け取った際、クライアントのページを切り替えたいのですが、どういう形でプログラムすればいいのか、そもそもそれが可能なのかがわからず、迷走しています。 具体的には、 PCでウェブページ表示 ↓ 携帯電話で特定のウェブページを表示 ↓ PC側ウェブページをリダイレクト(又は書き換え) という処理です。 それぞれのウェブページは同一サーバー上に存在します。 Ajaxかどうかはわかりませんが、実際に住信SBIネットバンクでは、取引をする際にモバイルキー認証があり、携帯電話で表示されるワンタイムパスワードを携帯電話で入力・送信後、PCのウェブページが自動的に切り替わります。 どうぞ、よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • HTML5のSDKについて

    こんにちわ。 HTML5の初心者なので、見当違いの質問をしていたら済みません。 HTML5について新しく開発を行おうと考えているのですが、 HTML5には、SDKなどの開発キットは存在するのでしょうか? また、HTML5を開発するに当たり、総合開発環境などは存在するのでしょうか? (例えばJavaやAndroidならば、JavaSDKとかAndroidSDKとかありますし、それと総合開発環境Eclipceを使って開発が行えますよね。そんなイメージで質問しています。) お手数をおかけしますが、お答え頂けたら幸いです。 以上

    • ベストアンサー
    • HTML
  • DoJa5.0 キャンバスの中にパネルは埋め込めますか?

    こんにちは!iアプリを製作している初心者です。 キャンバスとパネルを同時に使ったアプリを作りたいのですが、うまくいきません…。リストボックスのパネルをキャンバスに表示しようと思っています。 私が作ったソースコードの問題の部分を書いたので、どなたかご指導をお願いします(>△<) (1)MainPage.java import com.nttdocomo.ui.*; public class MainPage extends IApplication { //アプリの開始 public void start() { MainCanvas canvas=new MainCanvas(); Display.setCurrent(canvas); canvas.exe(); } } (2)MainCanvas.java import com.nttdocomo.ui.*; class MainCanvas extends Canvas { Graphics g=getGraphics(); public MainCanvas() { while(true) { //画面の描画 g.lock(); ~省略~ g.unlock(true); } MainPanel pl =new MainPanel(); Display.setCurrent(pl); } //描画 public void paint(Graphics g) {} } (3)MainPanel.java import com.nttdocomo.ui.*; class MainPanel extends Panel { ListBox lb1,lb2,lb3,lb4; //リストボックス public MainPanel() { //リストボックス作成 lb1 = new ListBox(ListBox.SINGLE_SELECT); lb1.append("選択1"); add(lb1); ~省略~ lb4 = new ListBox(ListBox.SINGLE_SELECT); lb4.append("選択4"); add(lb4); } } このように、(2)のMainCanvas.javaに(3)のMainPanel.javaをいったん埋め込んで、最終的に(1)のMainPage.javaでまとめて表示しようと思っています。ですが、(2)のMainCanvas.javaのMainPanel pl =new MainPanel();Display.setCurrent(pl);の部分でエラーが出て、読み込んでくれません…(;△;)何がおかしいのでしょうか?それから、今後はリストボックスにコンポーネントリスナーも付けようと思っています。

  • Ajaxで外部サイトの取り込み

    Ajax非同期通信、例えばJQueryの以下の様にyour-web-siteをページ内に取り込んだ場合、cssやjavascriptのパスが相対パスで指定されているのが原因で正しく表示されない場合があります。通常のhtmlで静的に取り込む場合は<iframe>で取り込むか、<base href="...">などを用いて相対パスを絶対パスに変換するのですが、Ajaxで動的に取り込む場合のうまい方法がわかりません。 よいアイデアや方法があればご教示ください。 --- javascript---- $(function (){ $("#a").load("http://your-web-site/"); }); ---- html -------- <div id="a"></div> ------------------

  • 親ウィンドウに表示されているものをポップアップウィンドウに表示

    xmlから取得した人物名を親ウィンドウに表示して、その人物名をクリックするとポップアップウィンドウが表示され、ポップアップウィンドウにクリックした人物名が表示されるプログラムをFLEXを用いて作っているんですがうまくいきません。 どのように改善すべきでしょうか?助言のほどよろしくおねがいします。 (かなりのソースを載せてしまってすいません。) 自分としては、子ファイルに記述してある「parentApplication.linkbutton_id.label」があやしいと考えてます。これで親ファイルのデータを取得することができるのですが、親ファイルの方で<mx:repeater>を使って繰り返し処理を行っているので、繰り返したデータを上記のプログラムで取得するところでおかしくなっているんだと思います。 なおこれは「ruby on rails」と連動させています。 ~親ファイル~ <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="load()"> <mx:Script> <![CDATA[ //インポート import mx.controls.*; import mx.managers.*; //データ取得 public function load():void{ var request:URLRequest = new URLRequest("http://localhost:3000/aisatus.xml"); request.method = 'GET'; var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, function(e:Event):void { var xml:XML = new XML(e.target.data); repeat_id.dataProvider = xml.aisatu; }); loader.load(request); } //小窓表示 public function kobetu():void{ PopUpManager.createPopUp(this, in_out, true); } ]]> </mx:Script> <mx:Panel title="一覧" x="20" y="20" width="300" height="250" layout="absolute"> <mx:Tile x="20" y="20"> <mx:Repeater id="repeat_id"> <mx:LinkButton id="linkbutton_id" label="{repeat_id.currentItem.name}" click="kobetu()"/> </mx:Repeater> </mx:Tile> </mx:Panel> </mx:Application> ~ポップアップウィンドウ(子ファイル)~ <?xml version="1.0" encoding="utf-8"?> <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" x="100" y="20" layout="absolute" width="500" height="300" title="出勤・退勤"> <mx:Label text="社員名:" x="20" y="20"/> <mx:Label text="{parentApplication.linkbutton_id.label}" x="60" y="20" id="employee_id"/> </mx:Panel>

    • ベストアンサー
    • Flash
  • 特定のページの画像URL一覧表示をしようと思っているのですが、

    特定のページの画像URL一覧表示をしようと思っているのですが、 何が原因なのか解らず困っています。 <html> <head> <script> function load(){ var req = new XMLHttpRequest(); req.open("GET", "http://news.google.co.jp/nwshp?hl=ja&tab=wn", false); req.onreadystatechange = function(){ if(4 == req.readyState){ set_news(req.responseXML); } }; req.send(null); } function set_news(xml){ var container = document.getElementById("news"); container.innerHTML = ""; var items = xml.getElementsByTagName("img"); for(var i = 0; i < items.length; i++){ var a = document.createElement("a"); a.href = items[i].getAttribute("src"); a.innerHTML = items[i].getAttribute("src"); container.appendChild(a); } } </script> </head> <body onLoad="load();"> <div id="news"></div> </body> </html> 上記はgoogleの画像URL一覧を取得しようと思っています。 この場合、何が悪いのでしょうか? ご教示宜しくお願いいたします。

専門家に質問してみよう