MovieClipSetterクラスを作ってみた

でもう一個、dskymdさんのサイトを参考にしてMovieClipの位置を相対的に指定して固定するクラスを作成。これ使えば画面のサイズが変わってもMovieClipが指定の場所に張り付いててくれる。参考にしたサイトのUtilitiesクラスに加えて基準点から座標をずらせるようにした。

dskymd:blog » Blog Archive » 全画面FlashのMCの再レイアウト

使い方はMovieClipSetterのインスタンスを作って、setMCでMovieClipと、基準点と、ずらす量を指定すれば張り付いてくれる。

class MovieClipSetter
{
   var mcContainer:Array=[];
   
   function MovieClipSetter()
   {
      Stage.align = “TL”;
      Stage.scaleMode = “noscale”;
      Stage.addListener(this);
   }
   
   function setMC(mc:MovieClip, position:String, dx:Number, dy:Number)
   {
      var obj:Object =
      {
         mc: mc,
         pos: position,
         dx: (dx==null)? 0: dx,
         dy: (dy==null)? 0: dy
      }
      mcContainer.push(obj);
      onResize();
   }
   
   function onResize()
   {
      for (var i in mcContainer)
      {
         var mc:MovieClip = mcContainer[i].mc;
         var pos:String = mcContainer[i].pos;
         var dx:Number = mcContainer[i].dx;
         var dy:Number = mcContainer[i].dy;
         
         var stageW = Stage.width;
         var stageH = Stage.height;
         var mcW = mc._width;
         var mcH = mc._height;
         
         var T:Number = 0;
         var R:Number = stageW – mcW;
         var B:Number = stageH – mcH;
         var L:Number = 0;
         var C:Number = stageW / 2 – mcW / 2;
         var M:Number = stageH / 2 – mcH / 2;
         
         var W:String = pos.substr(0, 1);
         var H:String= pos.substr(1, 1);
         
         switch(W)
         {
            case “L”:
               mc._x = L + dx;
               break;
            case “C”:
               mc._x = C + dx;
               break;
            case “R”:
               mc._x = R + dx;
               break;
         }
         
         switch(H)
         {
            case “T”:
               mc._y = T + dy;
               break;
            case “M”:
               mc._y = M + dy;
               break;
            case “B”:
               mc._y = B + dy;
               break;
         }
      }
   }
}