ActionScript3.0 | memo-memo - Part 3 Skip to content

memo-memo

web制作に便利そうな情報をメモるブログ

Archive

Tag: ActionScript3.0

まだまだ、基本的な所だけど、とりあえずメモ。
まず、ActionScript3.0で、クラスを定義する為には、新規ファイルで、「ActionScript(AS)ファイル」を選択する。
そうすると、真っ白のテキストエディターみたいなファイルが作成されるので、そこにクラスを書いていく。
書き終わったら、flaファイルと同じフォルダに入れて、flaから、呼び出す。
基本的な構文は、

package{
    public class MyClass{
        function MyClass(){
        //ここに処理
        }
    }
}

上記のような感じ。publicが無いと、flaから呼び出せないので注意。他にも、privateとか、いくつか属性と呼ばれるものがあるらしいけど、その辺は追々。publicって、phpの本を読んだ時も出てきたなぁ。
で、flaからは下記の様に呼び出す。

var myObject:MyClass = new MyClass();
trace(myObject);  //出力:[object:MyClass]

とりあえず、メモ。

mouseXプロパティは、各々のインスタンスの基準点を原点に座標を測る。

xプロパティは、自分の配置されたタイムラインの親のタイムラインの基準点を原点に座標を測る。

DisplayObject.mouseXは、自分が中心の天動説プロパティで、DisplayObject.xプロパティは、自分の属する座標を基準にする地動説プロパティ。(この本に、そういう表現で書かれていた。)

うーん、若干消化しきれてない…

慣れていこう★

ActionScriptを勉強していたら、便利そうなテクニックが書かれていたので、メモ。

例えば、2009年10月4日を、スラッシュで区切って、「2009/10/4」と表現する時に、出来れば、日にちを表す「4」を、「04」こんな感じに表現したい時の処理。

例えば、if文とかを使って、条件分岐で、1〜9の時は、頭に「0」を追加して、10以上の時は、そのまま表示。こんな感じでもいいけど、条件分岐をせずに処理する方法が下記の様な書き方。

ActionScript

var my_date:Date = new Date();
var nYear:Number = my_date.fullYear;
var nMonth:Number = my_date.month + 1;
var nDate:Number = my_date.date;
var year_str:String = String(nYear).substring(2);
var month_str:String = String(nMonth + 100).substring(1);
var date_str:String = String(nDate + 100).substring(1);
var today_str:String = year_str + "/" + month_str + "/" + date_str;
trace(today_str);

重要なのは、赤字の3行の処理。

まずは、var year_str:String = String(nYear).substring(2);は、単純に、取得された年(2009とか)の後ろの2文字を、substring();で抜き取っている。(09とか)

で、var month_str:String = String(nMonth + 100).substring(1);と、var date_str:String = String(nDate + 100).substring(1);は、数値は、月と日で違うけど、処理としては同じ。

まず、取得された日にち(もしくは月)の数値に100を足す。String(nDate + 100)は、この時点で、今日が4日の場合、「104」になる。その100を足した数値の後ろの2文字を年同様、substring();で抜き取れば、「04」になる。

このやり方だと、日にちや月が一桁でも二桁でも使える。

例その1)

13日の場合

13+100=113

後ろの2文字は、「13」

例その2)

3日の場合

3+100=103

後ろの2文字は、「03」

ちなみに、substring();は、今回は第二引数を省略した形で書いてます。

多分、javascriptでも、同様の考え方で同じ結果が出せるでしょう。(多分ね。)

ActionScript3.0で、イベント処理の考え方メモ。

ターゲットインスタンス.addEventListener("イベント",hoge);
function hoge(hikisuu){
〜ここに処理〜
}

上記の様になるらしい。

何となく、感覚的に「おや?」っておもったのは、赤の部分の引数の有無。

どうやら、addEventListenerで指定したイベントが発生し、関数hogeが呼び出されたた時に、イベントオブジェクトという引数を一つ、関数hogeに渡すらしい。だから、関数hogeを定義する時も、一つ引数を持たせる形にしなきゃならないらしい。

…使わないかもしれない引数を、いちいち指定しなきゃならないのって、普通に忘れそう…。気をつけよう。

ちなみに、addEventListenerの第二引数に指定する関数は、呼び出しでは無く参照なので、「( )」はいらないらしい。