as2の学校2日目レポートでEventDispatcherのことも書こうと思っていたんですが、AS2のコードなので、AS3で開発を始めた今となっては使えねぇナァ、と思いつつヘルプなどを読んで自分なりにAS3版を作ってみました。

Main.as(ドキュメントクラス)

package {  
import flash.display.MovieClip;  
import flash.events.Event;  
public class Main extends MovieClip {  
public function Main() {  
var dispatcher:CustomDispatcher = new CustomDispatcher("aho");  
dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler);  
dispatcher.doAction();  
}  
private function actionHandler(event:Event):void {  
trace("actionHandler: " + event);  
trace(event.type);  
}  
}  
}  

CustomDispatcher.as

package {  
import flash.events.EventDispatcher;  
import flash.events.Event;  
class CustomDispatcher extends EventDispatcher {  
public static var ACTION:String;  
function CustomDispatcher(string) {  
ACTION = string;  
}  
public function doAction():void {  
dispatchEvent(new Event(CustomDispatcher.ACTION));  
}  
}  
}  

こんな感じでよいものなのか。

型が見つからないか、コンパイル時定数ではありません

MovieClipにカスタムクラスを関連付けようとしたら出たエラー。
わけわからなくて、ググったり、参考書読んだりして、カスタムクラスを見直してたらいつの間にか直った。

細かい書式の問題なんだろうか?よくわからなかった。

§

今日の成果:
Tweenerを覚えた。簡単にスクリプトアニメーションが作れる!
今回は色変更のアニメーションを作った。

データ型の種類

プリミティブ型

  • Boolearn
  • int(-2147483648~2147483647の整数。初期値0)
  • Null(null)
  • Number(整数、符号なし整数、浮動小数点数。int、uintの範囲外の値に使う。初期値NaN)
  • String(ストリング。初期値null)
  • unit(0~4294967295の整数。)
  • void(undefined。戻り値の型注釈としてのみ使われる)

オブジェクト型

  • Object(初期値null)
  • Array
  • Date
  • Error
  • Function
  • RegExp
  • XML
  • XMLList

この間のAS2講義2日目のレポートを書かないうちになんだかんだで就職して、なんのかんのでいきなりAS3で開発する羽目になっています。

そういうわけで(?)講義レポートは置いといて、AS3に四苦八苦している様子を記録しようと思います。

うちに帰ってから書いてもいいけど寝る時間無くなるし、覚えたその場で書いちゃったほうがいいんです。きっと。

んでタイトルにもありますaddFrameScriptなんちゃら。
ドキュメントクラスにSpriteを継承したクラスを使ってたら出たエラー。なんのこっちゃわからなくてググりまくったら、メインタイムラインにスクリプトが書いてあったらだめだったっぽい。ということがわかった。

なーんてコトはヘルプにも何もかいてないっつの。

そもそもaddFrameScriptは隠しメソッドであり、ヘルプにも載ってないのである。

である。じゃないよな。
まあいいや。前途多難。

ActionScript2.0で学ぶ、オブジェクト指向プログラミングの講義を受けることになりました。
今日は1日目。
復習も兼ねてノートを羅列。
■AS1,2,3それぞれの特徴

AS1 AS2 AS3
大文字/小文字の区別 ×
型指定 ×
private/public変数 ×
クラス ×
コンパイルエラー
ランタイムエラー × ×

■オブジェクト指向プログラミングとは
これまで「順序」で考えていたプログラミングを、「物」を主体に考えていくプログラムの書き方のこと。
利点

  • 共同開発ができる。仕様変更に強い。
  • 使い回しができる。
    実際には「物」に「動作」と「性質」を付与していく。
    ここでいう「物」を「クラス」で作る。
    ■クラス
    クラスファイルは拡張子.as
    文字コードはUTF-8であること。
    クラスを使う時の概念は、ライブラリからMCをステージに配置する概念と同じ。
    クラスの要素
  1. 動作:メソッド(as1でいうところのファンクション)
  2. 性質:プロパティ(as1でいうところの変数)
  3. 初期化:コンストラクタ
  4. 予期せぬ動作:イベント
    クラスのインスタンス化
  5. 見た目なし>newクラス(var hoge:Class = new Class();)
  6. 見た目あり>MCと結びつける(リンケージから設定)
    extendsで継承
    クラスの性質を別のクラスに引き継がせることができる。
    ■Flashで扱える外部データ
  • テキストファイル
  • XML
  • Flash Remoting
  • Blaze DS
  • Flash Media Server
    など
    XML解析で必要になるヤツら
  1. firstChild - 長男
  2. childNodes - 子供たち[配列]
  3. attribute - 属性[オブジェクト]
  4. nodeValue - のあいだ
    他にも色々あるんだけど、とりあえず以上を覚えておけばどんなxmlでも解析できるゾ!
    …ほんとうにノートの羅列だった。
    以下はドットフェスで尾崎先生が言っていたことの備忘録
    モノ作りで大切なこと
  • 堅牢な骨組み
  • 親しみやすいデザイン
  • 直感的なUI
  • 実際の動作チェック

Flash-ActionScriptの技術ブログのつもりで始めた当ブログですが、いきなりperlの話題からスタートです。
現在開発中であり、ワンクリックアワードに出品予定の白米こんぶさん
未だβ版なのですが、β版たる最大の要因は読み込みxmlにあります。
レシピをcookpad.comから拾っているのですが、これを拾う為にyahoo Pipesを利用しています。
が、
そもそもcookpad.comは人気サイトで、みんなが献立を考える時間帯になると激重になってしまい、データが拾えなくなる場合があることがわかりました。
そこで、重くならない時間帯にxmlを保存して、別ファイルとして自分のサーバに置いておく(白米こんぶさんはそれを読み込む)という対策をとりました。
でも手動でxml保存するの、大変だべ?
というわけでcgiを使って、その作業を半自動化することにしました。
こちらのサンプルスクリプト(HTTPクライアント)を利用させていただきました。
改造ポイントはクエリによって読み書きファイルを制御する部分。

if ($ENV{‘QUERY_STRING’}) {
#クエリを解析して読み書きファイルを確定
my @list = split(/=/,$ENV{‘QUERY_STRING’});
$acs_category = eval “$acs_$list[1]”;
$logfile = eval “$logfile_$list[1]”;
#実行
&request;
}

順加はeval関数を覚えた!
あとは読み込んだページ情報を表示せずに外部ログに書き込む処理を施せば完成。
思ったより簡単でした。これでいつでもxmlファイルを更新できます。

われもしてみむとてするなり
あるお方の勧めにより、わたしも仕事などで得た技術をブログとして記録していくことにしました。
順加の巣のリニューアル構想のひとつに、複数ブログの連立というのがあって、そのうちのひとつのブログ、という位置づけにしようと考えているので、ブログタイトルやURLはいずれ変わります。
技術ブログ始めたいのにリニューアル作業はまだ進められないので、seesaaブログでフライングスタートした次第。
目的としては自分用のメモなので、他の人が見て面白いものにはならないと思います!

keyboard_arrow_up