Flashの最近のブログ記事

LiveHTMLHeader

Flash制作の際に、ローカルで動くものであれば、traceを使い、いろいろな値を出力させて確認しながら制作しますが、phpやjsなどと連携させる場合、なかなか見ることが出来ません。
そこで、アップされたサイト内のflashの動きの動向を見る際には、このFirefoxのアドオンのLive HTTP Headersを使い、HTMLヘッダを監視すると便利です。
外に読みに行く画像パスやエラーなどについても返してくれます。


ダウンロードはコチラから
Live HTTP Headers - Firefox addon
flashplayer10

iPhone にはいつまで待っても搭載されないFlashプレーヤーですが、他のスマートフォンには早くも、FlashLiteではなく、PC版と同じく、Flash Player10βが10月のADOBE MAX conferenceで発表されるようです。
対応OSは、"Google Android / Nokia Symbian / Windows Mobile / Palm webOS"になるだろうとのことです。
iPhoneのFlash搭載は、ハード的な問題よりも、政治的な側面でいつまでも搭載されていないと思っていますが、今回のスマートフォンの大多数にFlash10が搭載されることで、市場の動向が変化してくることを期待しています。


engadget -- Flash 10 for smartphone beta coming this October
http://www.engadget.com/2009/06/22/flash-10-for-smartphone-beta-coming-this-october/


Adobe - Q2 FY2009 Financial Results
http://www.adobe.com/aboutadobe/invrelations/09q2analyst/
Flash内で月齢[Wikipedia]を扱おうと思い、Wikipediaに出ている公式をFlash内で使えるようにActionScript3.0で書いてみました。 また、計算された月齢をもとに、配列に規定された月名も表示できるようにします。

var LunarAgeArray:Array = [0,2,0,2,2,4,5,6,7,8,9,10];
var LunaName:Array = ["朔(さく)/新月(しんげつ)","既朔(きさく)","三日月(みかづき)","","",""," 上弦(じょうげん)"," 上弦(じょうげん)","","","","","十三夜(じゅうさんや)""小望月(こもちづき)/幾望(きぼう)","満月(まんげつ)/望月(もちづき)","十六夜(いざよい)/既望(きぼう)","立待月(たちまちづき)","居待月(いまちづき)","寝待月(ねまちづき)/臥待月(ふしまちづき)","更待月(ふけまちづき) ","","下弦(かげん)" ,"下弦(かげん)" ,"","","","","","","晦(つごもり)","晦(つごもり)"];
var nowDay = new Date();
var nowYear = nowDay.getFullYear();
var nowMonth = nowDay.getMonth();
var realMonth = nowMonth+1;
var nowDate = nowDay.getDate();
LunarAge = (((nowYear - 11)%19) * 11 + LunarAgeArray[nowMonth] + nowDate)%30;

trace(realMonth +"月"+nowDate+"日の月齢 = "+LunarAge"+" 月名 = "+LunaName[LunarAge-1]);




MoonToday
単純なActionScriptですが、今日はまってしまったこと。
メインのタイムラインに
trace("bg = "+_root.main_mc.make_mc.down_mc.bg);
と書くと、"undefined"と出力されますが、
down_mc内に
trace("bg = "+this.bg);
と書くと、
"down_mc = _level0.main_mc.make_mc.down_mc.bg"
とちゃんと出力されます。

rootからとれる階層の深さによって、出力されるかどうかが決まるようです。
今日はMovieClipの作り方をシンプルにして解決してしまいましたが、いくつまで入れ子にしてもコントロール出来るのかはちょっと時間のある時に調べてみようと思います。

そもそもそんなごちゃごちゃした入れ子にするな!
とか
全てステージ上に配置せずにASで管理しろ!
というのは実践してるつもりでしたが。
以後気をつけようと思います。

テキストフィールドの境界線は、Flashのプロパティからもつけられますが、[テキスト入力エリアの1pxの枠を消す//AS1.0]のように、ActionScriptでつけることもできます。

さらに、どうせつけるなら、色も指定したくなった時は、下のように入れるだけです。

//sample_txt.の境界線をFF3300の色にする場合
sample_txt.border = true;
sample_txt.borderColor = 0xff3300;


テキスト入力エリアの1pxの枠を消すためにはこちらの記事参照
テキスト入力エリアの1pxの枠を消す//AS1.0
前回のActionScript3.0でのTweenerに続き、Tweenerで動かしているムービークリップの止め方です。

Tweenerでは、ムービークリップを指定して止めることができます。
とってもわかりやすいです。

//ActionScript//////////////////////////////////////////////////////////////////

Tweener.pauseTweens(test_mc);


Tweenerの導入と基本的な使い方はこちらの記事参照
ActionScript3.0&FlashCS4でTweenerを使う準備 // Flash
オブジェクトをイージングをつけてコントロールするために、Tweenクラスを使うことができますが、いろいろと細かい動作を設定したり、先のことを考えるとTweenerを使うことにしました。

Tweenは特にファイルを落としてくることなく、標準のFlashの状態でimportして使えますが、Tweenerでは、asファイルのダウンロードと規定フォルダ内に入れてやることが必要です。
Tweenerはhttp://code.google.com/p/tweener/からダウンロードします。

AS2版とAS3版、そのほかにもJavaScriptなどもあるので、今回はAS3を間違えないようにDLします。(今回はver.1.31.74)
ダウンロード後解凍すると、caurinaという名前のフォルダになるので、このフォルダごと今回は、(Macです)"アプリケーション/Adobe Flash CS4/Common/First Run/Classes/caurina"に入れました。

この場所は、Flashの"環境設定/ActionScript/ActionScript3.0設定/ソースパス"で選択します。

ここまでできていれば、下の例のように利用できるはずです。
Tweenerの利用についてはまた後日。

//ActionScript//////////////////////////////////////////////////////////////////

import caurina.transitions.Tweener;
Tweener.addTween(target_mc, {y: target_mc.y+50, transition:"linear", time:1,delay:1});


Tweenerでのムービークリップの停止はこちら記事を参照
Tweener.pauseTweensでMovieClipの動きを止める // Flash AS3


参考サイト
AS3 で Tweener を使う|Flash / ActionScript|プログラムメモ
ActionScript3.0 tweener - kozy.heteml.jp

AS3に限らず、画像の読み込み完了をとって、サイトの遷移を始めることが良くあります。
画像の読込完了をとらないと、画像がまだ入りきっていないのにサイトが動き始めてしまうという悲惨な状態になってしまいます。

ActionScript3.0では、addEventListenerで、Event.COMPLETEをとって、ロードの完了がとれます。

下は、ActionScript3.0での画像読み込みと、その完了をとってtrace("Complete!");を実行します。
trace("Complete!");の部分に読込み完了時の動作を設定すれば、そのまま流用できます。

//ActionScript//////////////////////////////////////////////////////////////////


package {
    import flash.display.DisplayObjectContainer;
       import flash.display.Loader;
       import flash.net.URLRequest;
    import flash.events.*;
public class Test extends MovieClip {
//コンストラクタ
function Test(){
    myimgLoader(this,"パス/test.jpg");
}

function myimgLoader(container:DisplayObjectContainer, url:String) {
    //Loader作成
    var imgLoader:Loader = new Loader();
    container.addChild(imgLoader);
    //URL
    var urlReq:URLRequest = new URLRequest(url);
    //読み込み開始
    imgLoader.load(urlReq);
    configureListeners(imgLoader.contentLoaderInfo);
}
function configureListeners(dispatcher:EventDispatcher):void {
    dispatcher.addEventListener(Event.COMPLETE, completeHandler);
}
          
function completeHandler(evt:Event):void {
    trace("Complete!");
}

}
}


単純な画像読み込みは、下のエントリーを参照
LoadMovie & MovieclipLoaderのような外部画像の読み込みをAS3
https://www.bute-studio.com/lab/2008/01/as3loader.html

ActionScript3.0では、今まではよく使っていた_xや_alphaなどの「_」がなくなっていたりします。
それらが混乱して間違って使ってしまうのが原因でエラーが出ますが、代表的な間違いやすいものを挙げてみました。


「_」がつかないもの
AS2.0 AS3.0
_root root
_parent parent
_visible visible
_alpha alpha
_width width
_height height
_rotation rotation
_x x
_y y
_currentframe currentFrame
名称が変わったもの
AS2.0 AS3.0
_xmouse mouseX
_ymouse mouseY
_xscale scaleX
_yscale scaleY


bute lab. 内のActionScript3.0関連の記事はこちらから
Flashで扱う変数をHTMLに記述する //HTML&ActionScript (addvariable)と同様に、配列にしたい変数をHTMl内に記述して、それをFlash内で使用します。
更新が必要な変数をHTML内に変数を書くことで、更新作業の手間が大きく削減できます。

「,」で区切られた文字列をFlash内で配列にするには、splitを使います。

//HTML内//////////////////////////////////////////////////////////////////
※FlashをSWFObject v1.5 で読込む場合の読込み該当部分に記述。

var so = new SWFObject("swf/test.swf", "devdev", "300", "200", "8");
so.addVariable("hensu", "100,111,154");
so.write("devdev");

//ActionScript//////////////////////////////////////////////////////////////////

var myAry = _root.hensu.split(",");
trace(myAry);

上をパブリッシュすると、myAryが配列としてtraceされます。

写真ギャラリーサイトフォト蔵のAPIを使って見ようと思いましたが、残念ながらそのままでは検索結果はFlash内に持ってこれません。
これは、crossdomain.xmlによるもので、proxyをどうにかしなければ、解決はできません。

自分のサーバーへ下のPHPファイルを一つおき、これを通すことでFlash内に持ち込めるようになります。
今回はフォト蔵用ですが、その他いろいろな場合によって$urlの部分を書き換えて使うことができます。

下のファイルへのアクセスには、検索させたいパラメータもURLに含み、
http://ファイルのパス.php?keyword=さくら
とすると、さくらで検索してくれます。


<?php
$keyword =  $_GET['keyword'];
$limit = 10;
$url = "http://api.photozou.jp/rest/search_public";    

$url .= "?type=photo&keyword=".urlencode($keyword)."&limit=".$limit;

$photoxml = file_get_contents($url);
echo $photoxml;
?>

フォト蔵 フォト蔵 API
Flashのコンテンツ内で右クリックすることで、Adobe Flash Playerの設定画面は表示させることができますが、これをActionScriptで強制的に表示させます。

Webカメラを使ったコンテンツでは、ActionScriptで設定画面を呼ぶことで、カメラの切替などの際に、コンテンツ内から操作へとつなげることもできそうです。

swf内には、上からbtn1〜btn4の順でmcを配置してあります。
System.showSettings(X);
の引数:Xを変えることで、表示させる設定画面のタブを指定することができます。

記憶領域設定
System.showSettings(1);
マイク設定

System.showSettings(2);
カメラ設定

System.showSettings(3);
以前の設定画面の継承

System.showSettings();

//ActionScript//////////////////////////////////////////////////////////////////

btn1.onRelease = function() {
 System.showSettings(1);
 };
btn2.onRelease = function() {
 System.showSettings(2);
 };
btn3.onRelease = function() {
 System.showSettings(3);
 };
btn4.onRelease = function() {
 System.showSettings();
 };
価格.com ブロードバンド