ブラウザでダウンロード ![]() AIR では、HTML コントロールによって、通常はブラウザで表示するようなコンテンツ を使用する事ができますが、主に対象として 3 つ考えられます。 1) PDF 2) SWF 3) HTML PDF と SWF は、もともと adobe のプラグインであり、 AIR に表示する事に特に問題はありません。 しかし、HTML はブラウザとしての機能には当然及ばず、 いろいろ問題があるようです。 2) SWF Mainw.mxml
001. <?xml version= "1.0" encoding= "utf-8" ?> 002. <mx:WindowedApplication 003. xmlns:mx= "http://www.adobe.com/2006/mxml" 004. 005. showFlexChrome= "true" 006. 007. initialize= "initData();" 008. creationComplete= "initApp1()" 009. applicationComplete= "initApp2()" 010. closing= "endApp(event)" 011. 012. visible= "true" 013. usePreloader= "true" 014. 015. alwaysInFront= "false" 016. 017. titleIcon= "@Embed('data/icon.png')" 018. title= "lightbox" 019. > 020. 021. <mx:Style source= "extern/Style.css" /> 022. <mx:Script source= "extern/Parts.as" /> 023. 024. <mx:Script> 025. <![CDATA[ 026. 027. import control.*; 028. 029. private var win:HtmlWindow = null ; 030. 031. // ********************************************************* 032. // endWindow 033. // ********************************************************* 034. private function endApp(e:flash.events.Event): void { 035. 036. trace( "[App:end]" ); 037. this .exit(); 038. 039. } 040. 041. // ********************************************************* 042. // pdfWindow 043. // ********************************************************* 044. public function pdfWindow(): void { 045. 046. trace( "[App:pdfWindow]" ); 047. 048. var win:PdfWindow = new PdfWindow(); 049. win.open(); 050. 051. } 052. 053. // ********************************************************* 054. // mapWindow 055. // ********************************************************* 056. public function mapWindow(): void { 057. 058. trace( "[App:mapWindow]" ); 059. 060. var win:MapWindow = new MapWindow(); 061. win.open(); 062. 063. } 064. 065. // ********************************************************* 066. // htmlWindow 067. // ********************************************************* 068. public function htmlWindow(): void { 069. 070. trace( "[App:htmlWindow]" ); 071. 072. if ( win == null ) { 073. win = new HtmlWindow(); 074. win.open(); 075. } 076. else { 077. win.visible = true ; 078. win.restore(); 079. } 080. 081. } 082. 083. // ********************************************************* 084. // htmlWindow2 085. // ********************************************************* 086. public function htmlWindow2(): void { 087. 088. trace( "[App:htmlWindow]" ); 089. 090. var win:GmapWindow = new GmapWindow(); 091. win.open(); 092. 093. } 094. 095. // ********************************************************* 096. // initialize 097. // ********************************************************* 098. public function initData(): void { 099. 100. trace( "[App:beforeDisplay]" ); 101. 102. } 103. 104. // ********************************************************* 105. // creationComplete 106. // ********************************************************* 107. private function initApp1(): void { 108. 109. trace( "[App:afterDisplay]" ); 110. 111. } 112. 113. // ********************************************************* 114. // applicationComplete 115. // ********************************************************* 116. private function initApp2(): void { 117. 118. trace( "[App:start]" ); 119. 120. dr.setFocus(); 121. 122. } 123. ]]> 124. </mx:Script> 125. 126. <mx:Image id= "dr" source= "@Embed('data/dr.png')" /> 127. 128. <mx:VBox> 129. <mx:Button 130. id= "btn1" 131. label= "pdf ウインドウ" 132. styleName= "blackButton" 133. click= "pdfWindow()" 134. width= "300" 135. /> 136. <mx:Button 137. id= "btn2" 138. label= "map ウインドウ(swf)" 139. styleName= "blackButton" 140. click= "mapWindow()" 141. width= "300" 142. /> 143. <mx:Button 144. id= "btn3" 145. label= "html ウインドウ(簡易ブラウザ)" 146. styleName= "blackButton" 147. click= "htmlWindow()" 148. width= "300" 149. /> 150. <mx:Button 151. id= "btn4" 152. label= "html ウインドウ(Google Map)" 153. styleName= "blackButton" 154. click= "htmlWindow2()" 155. width= "300" 156. /> 157. </mx:VBox> 158. 159. </mx:WindowedApplication> ![]() PDF の表示は全て adobe の reader に任せる形になるので、 プログラミングは殆ど必要ありません。 しかし、resize イベントは重要で、これをやっておかないと HTML コントロールは本来の価値が発揮できません。 ただ、調整するサイズに関しては、計算ではなく定数で行っています。 ( 計算で行えるかどうかは解りません ) PdfWindow.mxml
01. <?xml version= "1.0" encoding= "utf-8" ?> 02. <mx:Window 03. xmlns:mx= "http://www.adobe.com/2006/mxml" 04. horizontalAlign= "center" 05. verticalAlign= "middle" 06. type= "normal" 07. systemChrome= "none" 08. transparent= "false" 09. showFlexChrome= "true" 10. alwaysInFront= "false" 11. 12. initialize= "initData();" 13. creationComplete= "initApp1()" 14. applicationActivate= "initApp2()" 15. resize= "webResize(event)" 16. 17. width= "750" 18. height= "550" 19. 20. title= " PdfWindow" 21. > 22. 23. <mx:Script> 24. <![CDATA[ 25. 26. import mx.core.*; 27. import mx.events.*; 28. 29. // ***************************************************** 30. // 初期処理 31. // ***************************************************** 32. private function initData(): void { 33. 34. web.location = "data\\readme.pdf" ; 35. 36. } 37. 38. // ***************************************************** 39. // HTML コントロール のサイズコントロール 40. // ***************************************************** 41. private function webResize(e:mx.events.ResizeEvent): void { 42. 43. try { 44. web.width = this .width- 2 ; 45. web.height = this .height- 45 ; 46. } 47. catch (error:Error) { 48. } 49. 50. } 51. 52. // ********************************************************* 53. // creationComplete 54. // ********************************************************* 55. private function initApp1(): void { 56. 57. trace( "[App:afterDisplay]" ); 58. 59. } 60. 61. // ********************************************************* 62. // applicationComplete 63. // ********************************************************* 64. private function initApp2(): void { 65. 66. trace( "[App:start]" ); 67. 68. } 69. 70. 71. ]]> 72. </mx:Script> 73. 74. <mx:HTML 75. id= "web" 76. width= "700" 77. height= "500" 78. /> 79. 80. </mx:Window> |