スポンサーサイト
2009.01.10 | |
ActionScript勉強中。
LocalConnectionを使って2つのフラッシュが連携するようにしてみました。
↑のボタンを押すと新しいウィンドウが開いて、フラッシュが表示されマス。すでにウィンドウが開いている場合はそのウィンドウで表示されマス。
どんなカンジで連携してるかというと、
1.ボタンを押すと、どのボタンが押されたかを示す文字列をパラメータとしてメニュー側から表示側へ送信します。
2.表示側は、受け取ったパラメータに応じた表示を行いマス。
3.1.で送信に失敗した場合は表示ウィンドウを開きマス。
4.表示側は再生開始時にメニュー側に準備ができたことを通知します。
5.メニュー側は、表示側の準備が完了したことを受信したときに再送信すべきパラメータがあったら送信します。
なカンジです。
それぞれでのクライアント(送信側)サーバー(受信側)がどうなってるかで書くと
1.メニュー側がクライアントとして動作
2.表示側がサーバーとして動作
4.表示側がクライアントとして動作
5.メニュー側がサーバーとして動作
というカンジで、1.2.と4.5.はそれぞれベツのローカルコネクション名で通信しています。
メニュー側のスクリプトは、
// 最新送信内容といったカンジで、表示側のスクリプトは、
var latestParam:String = null;
// 受信コネクション
var receiver:LocalConnection = new LocalConnection();
receiver.ready = function(param:String) {
// latestParamに値がセットされていたら再送する
if (latestParam != null) {
connect(latestParam);
latestParam = null;
}
}
receiver.connect("lc_menu");
// 送信コネクション
var sender:LocalConnection = new LocalConnection();
sender.onStatus = function(info:Object) {
switch (info.level) {
case 'status':
// 成功したので、パラメータをとっておく必要はない
latestParam = null;
break;
case 'error':
// ウィンドウを開く
_root.getURL("http://blog-imgs-11.fc2.com/1/0/0/100th/display.html",
"_blank");
break;
}
}
// Noneボタン
none_btn.onRelease = function() {
connect("none");
}
// Regularボタン
regular_btn.onRelease = function() {
connect("regular");
}
// Strongボタン
strong_btn.onRelease = function() {
connect("strong");
}
// Elasticボタン
elastic_btn.onRelease = function() {
connect("elastic");
}
// Bounceボタン
bounce_btn.onRelease = function() {
connect("bounce");
}
// Backボタン
back_btn.onRelease = function() {
connect("back");
}
// paramを送信します。
function connect(param:String) {
latestParam = param;
sender.send("lc_display", "disp", param);
}
import mx.transitions.Tween;という風になっています。
// パラメータ
var paramMap = {none:mx.transitions.easing.None.easeOut,
regular:mx.transitions.easing.Regular.easeOut,
strong:mx.transitions.easing.Strong.easeOut,
elastic:mx.transitions.easing.Elastic.easeOut,
bounce:mx.transitions.easing.Bounce.easeOut,
back:mx.transitions.easing.Back.easeOut};
// テンプレートムービークリップを非表示
jien_mc._visible = false;
// 受信処理
var receiver:LocalConnection = new LocalConnection();
receiver.disp = function(param:String) {
var mc:MovieClip = createMovieClip();
var tween:Tween = new Tween(mc,
"_x",
paramMap[param],
50,
400,
2,
true);
tween.onMotionFinished = function() {
mc.removeMovieClip();
}
}
receiver.connect("lc_display");
// 新しいムービークリップを作成し、戻します。
function createMovieClip():MovieClip {
var depth:Number = getNextHighestDepth();
var mc:MovieClip = jien_mc.duplicateMovieClip("jien_" + depth,
depth);
return mc;
}
// 受信が可能であることを送信する
var sender:LocalConnection = new LocalConnection();
sender.send("lc_menu", "ready", "test");
2007.03.15 | | Comments(0) | Trackback(0) | Flash/ActionScript
« | HOME | »
Author:HundredthMonkey
プログラマ。