home > クラス定義でメニュー設定

クラス定義でメニュー設定

June 18, 2007

クラス定義の勉強中。簡単なメニューをクラス定義して製作してみました。簡単なサンプルです。





まず、Mymenu.asというクラスを定義する。

class Mymenu {

 var mc:MovieClip;

 //マウスオーバーした時の設定
 function btnback( mc:MovieClip , mos:Number , s:Number ):Void {
 
  //マウスがボタンの上下どちらからオーバーしたかを判別する
  var mcheight:Number = mc._height/3;
  var acell:Number = mcheight/2;

  if( mos <= acell ){
   var point = -mcheight;
  }else{
   var point = mcheight;
  }

  mc.onEnterFrame = function() {
   mc._y += (point - mc._y)/s;
   if (Math.abs(point - mc._y) < 0.4) {
    mc._y = point;
    delete mc.onEnterFrame;
   }
  }
  }

  //マウスアウトした時の設定
  function btnbackOut( mc:MovieClip , mos:Number , s:Number ):Void {
   mc.onEnterFrame = function() {
    mc._y += (mos - mc._y)/s;
    if (Math.abs(mos - mc._y) < 0.4) {
     mc._y = mos;
     delete mc.onEnterFrame;
    }
   }
  }
}

そして、Flashファイルを作成する。

//インスタンスの生成

var menuObj:Mymenu = new Mymenu(menu_mc1.menu_t);
var menuObj2:Mymenu = new Mymenu(menu_mc2.menu_t);
var menuObj3:Mymenu = new Mymenu(menu_mc3.menu_t);


//BTN1設定
this.menu_mc1.onRollOver = function(){
 menuObj.btnback( menu_mc1.menu_t, this._ymouse , 3 );
 photo_mc.gotoAndStop(2);
 _root.mozaicIn();
}
this.menu_mc1.onRollOut = function(){
 menuObj.btnbackOut( menu_mc1.menu_t,0, 3 );
}
//BTN2設定
this.menu_mc2.onRollOver = function(){
 menuObj2.btnback( menu_mc2.menu_t, this._ymouse , 3 );
 photo_mc.gotoAndStop(3);
 _root.mozaicIn();
}
this.menu_mc2.onRollOut = function(){
 menuObj2.btnbackOut( menu_mc2.menu_t,0, 3 );
}
//BTN3設定
this.menu_mc3.onRollOver = function(){
 menuObj3.btnback( menu_mc3.menu_t, this._ymouse , 3 );
 photo_mc.gotoAndStop(4);
 _root.mozaicIn();
}
this.menu_mc3.onRollOut = function(){
 menuObj3.btnbackOut( menu_mc3.menu_t,0, 3 );
}
this.stop();

あとは、ボタンにマウスオーバーされた時の演出を設定する。

function mozaicIn():Void{
 var mozaicSize:Number = 100;//初期のモザイクサイズ
 var TARGET:MovieClip = photo_mc;//モザイクをかけるMC名
 var SMALL:Number = 0.9;//モザイクサイズの縮小率
 var DEPTH:Number = 100;//モザイク用のMCの深度

 import flash.display.*;
 import flash.geom.*;
 this.createEmptyMovieClip("mozaicInTemp_mc", DEPTH);
  mozaicInTemp_mc.onEnterFrame = function():Void{
  var mtx:Matrix = new Matrix();
  var bmpData:BitmapData = new BitmapData(Math.floor(TARGET._width / mozaicSize),
  Math.floor(TARGET._height / mozaicSize), false);
  this.attachBitmap(bmpData, 1);
   mtx.scale(1 / mozaicSize, 1 / mozaicSize);
   bmpData.draw(TARGET, mtx);
   this._width = TARGET._width;
   this._height = TARGET._height;
    this._x = 312.5;
    this._y = 20;
    if (mozaicSize == 1){
     delete this.onEnterFrame;
     this.removeMovieClip();
    }else{
     mozaicSize *= SMALL;
     if (mozaicSize <= 1)mozaicSize = 1;
    }
  }
}




ブックマークする hatena del.ico.us


Comments

Post a Comment






Remember personal info