Posted By

daisuke103 on 02/24/08


Tagged

textmate auto size design as2 stage requid


Versions (?)

AS2 Stageリサイズ ステージに大きさを合わせるクラス


 / Published in: Other
 

  1. // ver 080128
  2. class lib.chrono_display {
  3. /*
  4. ////////////// 初期設定:コンテンツサイズ設定用 //////////////
  5. */
  6. //初期設定:
  7. var contentsX:Number;
  8. var contentsY:Number;
  9.  
  10. //ステージ表示設定
  11. var contentsAlign:String;
  12. var contentsMode:String;
  13.  
  14. // コンテンツ初期化ファンクション
  15. function init(cx:Number, cy:Number, calign:String, cmode:String):Void {
  16. if (cx != null) {
  17. contentsX = cx;
  18. } else {
  19. contentsX = 800;
  20. }
  21. if (cy != null) {
  22. contentsY = cy;
  23. } else {
  24. contentsY = 600;
  25. }
  26. if (calign != null) {
  27. contentsAlign = calign;
  28. } else {
  29. contentsAlign = "TL";
  30. }
  31. if (cmode != null) {
  32. contentsMode = cmode;
  33. } else {
  34. contentsMode = "noScale";
  35. }
  36. //ステージ表示設定
  37. Stage.align = contentsAlign;
  38. Stage.scaleMode = contentsMode;
  39. }
  40.  
  41. function set_param(mc:Object, tmp_param:Object) :Void {
  42. /**
  43. *mc: オブジェクト名を格納
  44. *halign: 左=[left] / センター=[center] / 右 =[right] / 右でx<0のときx=0 [xright]
  45. *valgin: 上=[top] / センター=[center] / 下=[bottom]
  46. *fit: 縦=[v] / 横=[h] /両方=[hv] / 拡大しない=[null] ----> 縦横の画面いっぱいに伸張
  47. *match: 縦=[mv] / 横=[mh] / 両方[mhv] / 拡大しない=[null] / 大きい方にあわせる[fullsize] ----> 縦横のリサイズのどちらを基準に追随するか
  48. *sflag: 最大=[max] / 最小=[min] / サイズ固定[fix] / 制限なし=[null] -- s1:横幅ピクセル数 s2:縦幅ピクセル数 s3:倍率 100%だと等倍
  49. *xoffset: 横の配置位置オフセット ピクセル数を入力します
  50. *yoffset: 縦の配置位置オフセット ピクセル数を入力します
  51. **/
  52.  
  53.  
  54. //引数が空の場合、初期化する
  55. mc._halign = tmp_param.halign ? tmp_param.halign : "center";
  56. mc._valign = tmp_param.valign ? tmp_param.valign : "center";
  57. mc._fit = tmp_param.fit ? tmp_param.fit : "";
  58. mc._match = tmp_param.match ? tmp_param.match : "";
  59. mc._sflag = tmp_param.sflag ? tmp_param.sflag : "";
  60. mc._xoffset = tmp_param.xoffset ? tmp_param.xoffset : 0;
  61. mc._yoffset = tmp_param.yoffset ? tmp_param.yoffset : 0;
  62. mc._s1 = tmp_param.s1 ? tmp_param.s1 : "";
  63. mc._s2 = tmp_param.s2 ? tmp_param.s2 : "";
  64. mc._s3 = tmp_param.s3 ? tmp_param.s3 : "";
  65. mc._s4 = tmp_param.s4 ? tmp_param.s4 : "";
  66. mc.tmp_xscale = 100;
  67. mc.tmp_yscale = 100;
  68.  
  69. //オブジェクトの元位置を退避 スタート位置
  70. mc.tmp_x = mc._s1;
  71. mc.tmp_y = mc._s2;
  72. mc.tmp_w = mc._width;
  73. mc.tmp_h = mc._height;
  74.  
  75. //ステージサイズ用のオブジェクトを作成
  76. var myStage = new Object();
  77. Stage.addListener(myStage);
  78.  
  79. if(mc._sflag == null || mc._sflag == "") {
  80. mc.tmp_width = Math.round(mc._width);
  81. mc.tmp_height = Math.round(mc._height);
  82. } else {
  83. mc.tmp_width = mc._s1;
  84. mc.tmp_height = mc._s2;
  85. }
  86.  
  87. // オブジェクトを描画
  88. draw_disp(mc);
  89.  
  90. // 現在のオブジェクトを退避する **
  91. var tmp_mc = this;
  92. myStage.onResize = function() {
  93. // オブジェクトを描画
  94. tmp_mc.draw_disp(mc);
  95. }
  96. }
  97.  
  98. function draw_disp(mc:Object) {
  99. //ステージの縦と横のサイズを取得する
  100. var nowStageW:Number = Stage.width;
  101. var nowStageH:Number = Stage.height;
  102. var zoomRate:Number = 100;
  103.  
  104. //fitを設定する
  105. if (mc._fit == "h") {
  106. mc._width = nowStageW;
  107. }
  108. if (mc._fit == "v") {
  109. mc._height = nowStageH;
  110. }
  111. if (mc._fit == "hv") {
  112. mc._width = nowStageW;
  113. mc._height = nowStageH;
  114. }
  115.  
  116. //matchを設定する
  117. if (mc._match == "mh") {
  118. //ステージの横幅を基準としてコンテンツのサイズを拡大率で指定
  119. var zoomRate:Number = (nowStageW / contentsX)*100;
  120.  
  121. if(mc._sflag == "max") {
  122. if(zoomRate > mc._s3) {
  123. zoomRate = mc._s3;
  124. }
  125. }
  126. if(mc._sflag == "min") {
  127. if(zoomRate < mc._s3) {
  128. zoomRate = mc._s3;
  129. }
  130. }
  131. mc._xscale = zoomRate;
  132. mc._yscale = zoomRate;
  133. mc.tmp_xscale = zoomRate;
  134. mc.tmp_yscale = zoomRate;
  135. }
  136. if (mc._match == "mv") {
  137. //ステージの縦幅を基準としてコンテンツのサイズを拡大率で指定
  138. var zoomRate:Number = (nowStageH / contentsY)*100;
  139. if(mc._sflag == "max") {
  140. if(zoomRate > mc._s3) {
  141. zoomRate = mc._s3;
  142. }
  143. }
  144. if(mc._sflag == "min") {
  145. if(zoomRate < mc._s3) {
  146. zoomRate = mc._s3;
  147. }
  148. }
  149. mc._xscale = zoomRate;
  150. mc._yscale = zoomRate;
  151. mc.tmp_xscale = zoomRate;
  152. mc.tmp_yscale = zoomRate;
  153. }
  154. if (mc._match == "mvh") {
  155. //ステージの縦幅、横幅の両方を基準としてコンテンツのサイズを拡大率で指定
  156. var zoomRateX:Number = (nowStageW / contentsX)*100;
  157. var zoomRateY:Number = (nowStageH / contentsY)*100;
  158. if (zoomRateX<zoomRateY) {
  159. zoomRate = zoomRateX;
  160. } else {
  161. zoomRate = zoomRateY;
  162. }
  163. if(mc._sflag == "max") {
  164. if(zoomRate > mc._s3) {
  165. zoomRate = mc._s3;
  166. }
  167. }
  168. if(mc._sflag == "min") {
  169. if(zoomRate < mc._s3) {
  170. zoomRate = mc._s3;
  171. }
  172. }
  173. mc._xscale = zoomRate;
  174. mc._yscale = zoomRate;
  175. mc.tmp_xscale = zoomRate;
  176. mc.tmp_yscale = zoomRate;
  177. }
  178.  
  179. // nakakita
  180. // mcの大きい方に合わせる 隙間なし
  181. if (mc._match == "fullsize") {
  182. // 縦横の比率
  183. var zoomRateX:Number = (nowStageW / contentsX)*100;
  184. var zoomRateY:Number = (nowStageH / contentsY)*100;
  185. if (zoomRateX > zoomRateY) {
  186. //ステージの横幅を基準としてコンテンツのサイズを拡大率で指定
  187. zoomRate = zoomRateX;
  188. }else{
  189. zoomRate = zoomRateY;
  190. }
  191. //ステージの縦幅を基準としてコンテンツのサイズを拡大率で指定
  192. if(mc._sflag == "max") {
  193. if(zoomRate > mc._s3) {
  194. zoomRate = mc._s3;
  195. }
  196. }
  197. if(mc._sflag == "min") {
  198. if(zoomRate < mc._s3) {
  199. zoomRate = mc._s3;
  200. }
  201. }
  202. mc._xscale = zoomRate;
  203. mc._yscale = zoomRate;
  204. mc.tmp_xscale = zoomRate;
  205. mc.tmp_yscale = zoomRate;
  206.  
  207. }
  208.  
  209. //halignを設定する
  210. if (mc._halign == "left") {
  211. mc._x = 0 + mc._xoffset;
  212. }
  213. if (mc._halign == "right") {
  214. mc._x = Math.round(nowStageW - (mc.tmp_width * (mc.tmp_xscale / 100)) + mc._xoffset);
  215. }
  216.  
  217. if (mc._halign == "xright") { // xが0以下になると小さくならない
  218. if (nowStageW <= mc._width) {
  219. mc._x = 0;
  220. }else{
  221. mc._x = Math.round(nowStageW - (mc.tmp_width * (mc.tmp_xscale / 100)) + mc._xoffset);
  222. }
  223. }
  224.  
  225. if (mc._halign == "center") {
  226. mc._x = Math.round((nowStageW/2)-((mc.tmp_width * (mc.tmp_xscale / 100)) / 2) + mc._xoffset);
  227. }
  228. //valignを設定する
  229. if (mc._valign == "top") {
  230. mc._y = 0 + mc._yoffset;
  231. }
  232. if (mc._valign == "bottom") {
  233. mc._y = Math.round(nowStageH - (mc.tmp_height * (mc.tmp_yscale / 100)) + mc._yoffset);
  234. }
  235. if (mc._valign == "center") {
  236. mc._y = Math.round((nowStageH/2)-((mc.tmp_height * (mc.tmp_yscale / 100)) / 2) + mc._yoffset);
  237. }
  238. return;
  239. }
  240. }
  241.  

Report this snippet  

You need to login to post a comment.