mieki256's diary



2011/11/28(月) [n年前の日記]

#1 [flash] AS3.0を勉強中

以前某所から「FLASHで落ちゲーを作れないか」と打診があったものの、開発環境が不安定・HDDが壊れるかもしれない気配がチラホラ見えていた時期だったので断ってしまったことがあり。しかし、実際作ろうとしたらどのくらの期間で作れるものか、どの程度のものが作れそうなのか、興味があったわけで。せっかくだから、ちょっと試してみようかと思い立ち、FlashDevelop 上で AS3.0 のプロジェクトを作成してポチポチと作業を始めたり。

ゲームを作る際に必須であろうメインループは、onEnterFrame っぽいイベントを設定すればそれっぽくなると分かった。また、画像表示は、Embed なるものを利用すれば画像を埋め込み可能と分かった。

ここで欲が出た。どうせならベクター画像を、つまり外部swfを埋め込んで利用できないものか。拡大縮小しても画質が荒れないし、容量も少なくて済むはず。しかし、試してみたら、ハマった。

ひとまず全部フリーの環境で実現できたほうがいいだろうと常日頃から思い込んでいるので、Flash CS5 は持っているけどあえて使わないで作業する。 ここまではできた。ちゃんとアニメも再生される。

しかし、AS3.0スクリプト上から、読み込んだ swf のタイムラインが制御できない。要するに gotoAndPlay() が使えない。ラベルを指定しても「そんなラベルは無い」と言われるし、フレーム番号を指定しても無反応。…このあたりは、読み込んだswfを子にしている親MovieClip に対して行っていたから無反応で当然なのだけど。では、その子MovieClipが対象であると、どうやって指定すればいいのか。そこが分からない。

また、読み込んだswfの縦横幅が取得できないことにも気がついた。

色々調べてみたら、そもそも Suzuka で出力した swf は FLASH8 までの対応なので、AS3.0 からは古いタイプの、タイムラインを一切制御できない swf として見られてしまうらしい。静止画としての表示、アニメ再生の垂れ流しならできる。だが、それ以上のことは、上位から一切指定できない。

AS3.0 相当の swf を出力する術は無いものか。以下を試してみた。 どれも解決策にはならなかった。

とうとう諦めて、Flash CS5 をインストールしてしまった。HDDが壊れるとアクティベーション云々が面倒なことになるから、当分壊れそうにないと分かるまで入れたくなかったのだけどな…。

Flash CS5 でパブリッシュした swf を FlashDeevelop 上で操作してみたところ、あっさりタイムラインの制御が出来た。くそう。Adobe純正アプリを使えということか。

つまり、フリーの開発環境・関連ツールでは制限がある。 その後調べてみたら、旧タイプのswfをバイト単位で読み込みつつ中身をガリガリ書き換えて無理矢理使えるようにしたり、svg をバイト単位で読み込んで解析して使えるようにしてしまう、そんなライブラリを公開している事例も見かけた。そこまでやるか。やらなきゃダメなのか。

なんとなく、FLASHを敵視して、HTML5+JavaScript を推している人達の気持ちが少し分かったような気がする。昔に比べたらFLASH界隈も随分オープンになってきたけど、やっぱりこういうところでAdobeにお布施を強要されるあたりが嫌われる一因だったり…するのかどうかはよく分からない。

以上です。

過去ログ表示

Prev - 2011/11 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project