last update: 2013/09/03

2006/04/11

Finding A New World

4月に入ってはや10日。ざんねん、まだ充電が足りないようだ。

さて気がついたら新年度ってことで、ぽわぽわしてるうちに学生生活も最大あと12ヶ月って感じになりました(学校やめればもっと短いですけど)。ってことで、いまさらになって「学生のうちにいろいろやっておかなきゃ」系モチベーションがぐんぐんあがってきましたよこれ。まぁ最近Flashはじめてみました、とかもその一環なんですけどね。

まぁなんというかここ数年やたら自分のあゆみを止めてきたような気がするっていうか、細かいところはそれなりにいろいろやってきてるんだけどもっとドラスティックな進化がほしいなーと。いつぞやも書いた気がしますが、自己表現の手段が文字(Webサイトとプログラム書き)だけっていうのはなんだか寂しい感じもするので、もうちょっと視覚的、もしくは聴覚的に訴えかける表現手段を学生のうちに手に入れておきたいなーと。

ということで、今年はちょっと自分の中のフロンティアを探しに行く、そんな1年にできればいいなぁーと思ってます。思ってるだけだけどね。

Flashおぼえがき

とりあえずFlashについては大体仕組みがわかってきました。ていうかなんかActionScriptはJavaScriptっぽいなぁとおもいながら書いてたんですが、一応形式上はECMAScript準拠みたいなんですね、ActionScript。どおりで違和感なくかけるわけだ。

そんなわけで、研究室で習作として書いていたWebベースの手書きのアレ体験版がさくっとできあがった感じでざーっといろいろActionScriptの覚え書きをメモっておこう。

  • クラス定義したかったら外部ASファイルに専用のファイルを用意するんだ!
  • コンパイル(シンタックスチェック)してみてXMLConnectorなんて未知のクラスですよーみたいなのが組込型で発生したらリファレンス引いて import mx.data.components.XMLConnector; とか適当にやって解決させるんだ!
  • よく厳密な型定義(var instance:Type; みたいなType指定)を忘れるんだけど、C++みたいにこれをシンタックスチェックの段階で曖昧な型定義に対して警告してくれたりしませんかー。普通に未定義変数(スペルミス)とか、曖昧な型の変数つくっちゃってそれに別の型を代入したー、とかに気がつかなくていちいちデバッガ走らせてるんですが…
  • テンポラリにインスタンス名を作ってるときはevalでそのインスタンスをゲットするんだ!
    // powawaムービークリップを10個つくるぜ!
    for(var i=0; i<10; ++i){
        // powawa_0 から powawa_9 までを作成
        this.attachMovie("powawa", "powawa_"+i, 100+i);
    }
    
    (snip)
    
    // ランダムに選んだr番目のムービークリップのインスタンスがほしいなぁ
    var temp:MovieClip=eval("powawa_"+r);
    みたいなノリらしい。
  • ムービークリップの子ムービークリップのさらに子ムービークリップのインスタンス名とかはちゃんとパスとして処理しろよ!
    var parentMovie:MovieClip=this.attachMovie("parent", "parentMovie", 10);
    // parentMovieの下にpowawaムービークリップを10個つくるぜ!
    for(var i=0; i<10; ++i){
        // powawa_0 から powawa_9 までを作成
        parentMovie.attachMovie("powawa", "powawa_"+i, 100+i);
    }
    
    (snip)
    
    // さっきつくったpowawaムービークリップの7番目を削除したいなぁ
    removeMovieClip("powawa_6"); // これはだめー
    removeMovieClip("parentMovie.powawa_6"); // こうするのだ
    みたいなノリらしい。parentMovie.powawa_6.removeMovieClip()とかでもよさそうだけど、これでやると次の話に続きます。

とまぁこんな感じのことが引っかかりました。でもあれだよね、未定義変数を使うときにエラーとかがでちゃうと、全然インタプリタ実行してる意味無いじゃんって話だよね。たとえば

// powawaムービークリップを10個つくるぜ!
for(var i=0; i<10; ++i){
    // powawa_0 から powawa_9 までを作成
    this.attachMovie("powawa", "powawa_"+i, 100+i);
}

// 別に var powawa_5とかをどこかで定義したわけじゃないんだけど使える
powawa_5._alpha=50; // 半透明50%にしてみよう

みたいなのができちゃうのがActionScriptのいいところ(なのかな?)っぽいんだけど、インスタンス名を動的にわりあてて、それを素のスクリプト文で平気で使えちゃうのがどうかしてるっていうのがC++上がりのオレ的感想なんだけど…。

まぁとにかく、XMLを扱いやすい言語なのでC/C++のほうでもXML使ってデータを吐き出してしまえばビューとしてFlashをつかうのは結構面白いなーとは思いながらつかってます。

(2006-04-13) わりと例のforループがメタメタだったのを修正。XHTMLのソース直うちで例ソースコードをつくるので、&lt;と&gt;をよく間違えるんです…。

comments powered by Disqus