カスタマイズ用部品(8-AS2.0)のブログ記事

2007.7.14公開

flashPlayer version7.0以降

右クリック時に表示されるコンテキストメニューの設定を変更します。

//AlertコンポーネントはAlert呼び出しのためのものでコンテキストメニュー追加とは無関係
//mCM:コンテキストメニューインスタンス
//one1:表示するメニュー格納変数
//oneO:one1選択時用関数
//clickA:コンテキストメニューを設定するインスタンス
//今回はメニューを一つだけ追加のため、one1、oneOの一組のみを作成しているが、さらに追加可能
var mCM = new ContextMenu();
//Flash Playerのコンテキストメニューのビルトインアイテム非表示。
mCM.hideBuiltInItems();
//コンテキストメニュー作成
var one1 = new ContextMenuItem("表示するメニュー名",oneO);
mCM.customItems.push(one1);
one1.enabled = true;
mCM.onSelect = menuHandler;
clickA.menu = mCM;

//コンテキストメニュー選択時呼び出し関数
function oneO():Void{
//コンテキストメニュー選択時の処理を書き込む
mx.controls.Alert.show("コンテキストメニュー選択");
}

ダウンロード
サンプル

2007.7.14公開

flashPlayer version6.0r65以降

画像化していない純粋な文字の色を左端から徐々に変化させます。
重ねた文字の前面側のマスクを狭めることによって実現しています。
フォントの埋め込みは使っていません。

//mask:文字消し用透明ムービークリップ
//text1:初期色のダイナミックテキストが配置されているムービークリップ
//text1は変化後の色のダイナミックテキスト上に配置されている
var speed:Number = 5;//マスクの変化速度
text1.setMask(mask);
_root.onEnterFrame = function():Void {
//マスクの範囲を狭めることで元の色の文字を消す。
if(mask._width - speed > 0)mask._width -= speed;
else mask._width = 0;
}

ダウンロード
サンプル

2007.7.14公開

flashPlayer versionver6.0r65以降

マウスが乗ったコンポーネントを拡大させます。
TextField等でonRollOverイベントを受け取る術が見つからなかったため、マウス座標を元に判定を行っています。

//コンポーネントのインスタンス名はcomp1及びcomp2
var compArray:Array = new Array();//コンポーネント格納配列
var compNumber:Number = 2;//コンポーネント数
var bigScale:Number = 150;//コンポーネント拡大時スケール(%)
 
//全コンポーネントの配列への格納とx座標y座標の取得
for(var i =1 ; i <= compNumber ; i++){
if(i <= compNumber) compArray[i] = eval("comp" + i);//配列への格納
compArray[i].nextScale = 100;//通常時は100、拡大時は150

//拡大時のコンポーネントの左上と右下のx座標y座標を保持
compArray[i].x1 = compArray[i].x;
compArray[i].x2 = compArray[i].x + compArray[i].width * bigScale / 100;
compArray[i].y1 = compArray[i].y;
compArray[i].y2 = compArray[i].y + compArray[i].height * bigScale / 100;
}

//コンポーネント上にマウスが乗った際の拡大表示
_root.onEnterFrame = function():Void{
for(var i = 1 ; i <= compNumber ; i++){
if(_root._xmouse>compArray[i].x1 && _root._xmouse compArray[i].y1 && _root._ymouse < compArray[i].y2){
compArray[i].nextScale = bigScale;//上にマウスがある場合はnextScaleを150にする
}
else{
compArray[i].nextScale = 100;//上にマウスがない場合はnextScaleを100にする
}
//表示スケールをnextScaleに近づけていく。2で割っているのは拡大縮小に視覚的変化を持たせるため
compArray[i].scaleX += (compArray[i].nextScale-compArray[i].scaleX) / 2;
compArray[i].scaleY += (compArray[i].nextScale-compArray[i].scaleY) / 2;
}
}

ダウンロード
サンプル

2007.7.14公開

flashPlayer version6.0r65以降

TextInputコンポーネント内に入力されたメールアドレスに規定以外の文字が使用されていないか、@が使用されているかをチェックします。
応用すればメールアドレス問わず使用可能です。
AS2.0には正規表現がないようなので、一文字ずつ切り分けることで実現しています。

//AlertコンポーネントはAlert呼び出しのためのものでメールアドレスチェックとは無関係
//button:メールチェック用Buttonコンポーネントのインスタンス名
//textBox:メールアドレス入力用TextInputコンポーネントインスタンス名
//メールアドレスチェック用関数
//文字列を受け取り、使用可能な文字以外を使っていた場合はfalseで返します
//また@を使用していない場合もfalseを返します
//mailtextが入力されたメールアドレス、ccharが使用可能な文字となります
function mailcheck(mailtext:String):Boolean{
var mchar:String = "";
var cchar:String = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.@";

//使用可能文字のみかチェック
//受け取った文字列を一文字ずつ使用可能な文字と照らし合わせて判定しています
for (var i=0 ; i < mailtext.length ; i++){
mchar = mailtext.charAt(i);
if (cchar.indexOf(mchar,0) == -1)return false;
}
//@を使用しているかチェック
for (var i = 0 ; i < mailtext.length ; i++){
if(mailtext.charAt(i) == "@")return true;
}
return false;
}

//ボタン押下時
button.onPress = function():Void{
//メールアドレスチェック関数呼び出し
if(mailcheck(textBox.text) == true){
mx.controls.Alert.show("メールアドレスの形式は正しいです");
}
else{
mx.controls.Alert.show("メールアドレスの形式は不正です");
}
}

ダウンロード
サンプル

前へ 1 2