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;
}
}
}