TOPページ > カテゴリ別表示 : Actionscript

本文開始▼

Actionscript アーカイブ

2008年07月23日

as2.0でas3.0的イベント実装方法

いまさらですが、as3.0のイベント設定に使用されているaddEventListenerをas2.0でも使用する方法を紹介します。
addEventListenerはEventDispatcherクラスのメソッドで、as3.0の場合MovieClipクラスはEventDispatcherクラスを継承しているのでaddEventListenerを使うことができるのですが、as2.0では継承していないためデフォルトでは使用できません。EventDispatcherクラスに関する情報があまり出回ってなかったので、自分の場合は習得に手間取りましたが、覚えるべきことは多くないです。

下記のソースはclickイベントをムービークリップに実装してるだけです。
このソースの肝となる部分は最初の2行だけですね。「mx.events.LowLevelEvents;」の部分で

・mouseMove
・mouseDown
・mouseUp
・mouseOver
・mouseOut
・mouseDownSomewhere
・mouseUpSomewhere

以上のイベントが使えるようになります。(UIEventDispatcherクラス単体ではload、unload、keyDown、keyUpイベントしか使えません。ちなみに、UIEventDispatcherクラスはEventDispatcherクラスのサブクラスです。)
「mx.events.UIEventDispatcher.initialize(this);」の部分でムービークリップにEventDispatcherクラスの機能を追加しています。「mx.events.LowLevelEvents;」は「mx.events.UIEventDispatcher.initialize(this);」の前に書く必要がありますので注意。イベントの種類は違いますが、これでas3.0のようにイベントを設定できるようになります。


//ムービークリップ1フレーム目に記述

mx.events.LowLevelEvents;
mx.events.UIEventDispatcher.initialize(this);


addEventListener("mouseDown",this);
addEventListener("mouseUp",this);
addEventListener("mouseOut",this);

function click(evt){
	trace(evt.type);
}

function mouseDown(evt){
	addEventListener("click",this);
}

function mouseUp(evt){
	dispatchEvent({type:"click"});
}

function mouseOut(evt){
	removeEventListener("click",this);
}

2008年06月24日

Flash OOP for ActionScript 3.0 がついに発売!

ついに知る人ぞ知るFlash OOP本の新作が登場しますね。
その名も『FLASH OOP for ActionScript 3.0』。発売日は7月2日だそうです。

前作『FLASH OOP (Advanced Web design books)』を読んでない方はこちらも是非。

両者とも趣が違うみたいなので、Flashユーザーは両方買うべし。ちなみに、OOP(オブジェクト指向プログラミング)とありますが、OOP入門者向けではなく、ある程度OOPに慣れた人向けの本です。一通りコンテンツは作れるんだけど、さらに上を目指したいって人は是非。
ちなみにこれらの本は中村勇吾氏やコリン・ムック氏のお墨付きです。

2007年04月07日

Flash Professional 9 ActionScript 3.0 Previewを入れてみた

今さらながらFlash8を買ってしまったので、Flash8ユーザーのみが無料入手できるFlash Professional 9 ActionScript 3.0 Previewダウンロードしてみた。どういうものかというと、flash8をベースにactionscript部分のみが次期バージョン(3.0)に対応しているといった具合(ただし、インターフェイスは英語になっている)。

使い方はパブリッシュの設定でactionscriptバージョン項目を3.0に指定するだけでOK。他はflash8と変わりなし。リリースされたのが結構前ということもあってか、as3.0のコードヒントが中途半端ですね。特にasファイルのエディタ関してはコードヒントは無いに等しいのでメイン側のエディタで記述してからasファイルにコピペしたほうがよさげ。

とりあえず、as3.0でオブジェクト指向プログラミングをする場合の最も簡単な例をあげます。この例ではメインのタイムラインには何も記述せずasファイルだけでプログラムを動作させています。


package {
	import flash.display.*;
	import flash.text.TextField;

	public class HelloWorld extends Sprite
	{
		public function HelloWorld()
		{
			var txt:TextField =new TextField();
			txt.text ="123";
			addChild(txt);
		}
	}
}

まずpackage。これはas3.0でclassファイルの記述する場合必須となります。classファイルはpackage(ディレクトリのようなもの)で管理されます。

次にimport。これは他のクラスを読み込む際に利用します。ちなみにflash.displayパッケージにはSpriteMovieClip等表示に関するクラスが含まれています。サンプルでは*(ワイルドカード)を使用しているのでflash.displayパッケージ内すべてのクラスを読み込んでいます。

今回はメインタイムラインに一切手を加えずflashを動作させるということなので、swfの実行時に自動的にclass実行させる必要があります。これはas3.0からの機能です。ステージのプロパティでDocument classという項目に実行させたいクラス名(例:HelloWorld)を入力します。これでルートにHelloWorldクラスが関連付けられます。 それに加え、classファイルのpublic class HelloWorld extends Sprite{}の部分ですね。publicextends Spriteが肝となります。publicはルートからのアクセスを許可し、Spriteクラスは画面表示の基盤となります。どちらかが欠けていても動作しません。(ただし必ずしもSpriteである必要は無くSpriteクラスを継承しているクラス(MovieClipクラス等)であれば実行可能)これでswf実行時にHelloWorldクラスコンストラクタが実行されます。

TextFieldクラスはas2.0と同じなので省略します。

最後にaddChildメソッド。addChildメソッドを使用しSpriteクラスやMovieClipクラス等(コンテナ)にtxtを吊るすことで表示させます。

とこんな感じでだいぶ殴り書きっぽくなりましたが、一応自分用ンのメモと言うことで。。。

2007年02月25日

ActionScript中級からさらにレベルUPしたい人に。

先日FLASH ActionScript スーパーサンプル集という本を買ったんですがこれが結構良い出来。サンプルに使われている画像や目次などを見ると一見初心者向けかなと思ったんですが、結構濃い内容になっています。

as2.0対応ということなので、本書の多くのサンプルでカスタムクラスを使用しています。単純なサンプルでもあえてカスタムクラスを使用していたりするので、情報を吸収し易いつくりになっています。また、本書冒頭に「早わかりActionScript2.0」というものがあるのですが、クラスメンバーとインスタンスメンバーの違いなどが説明してあって、個人的にこれが案外役に立った。また、サンプルのバリエーションも幅広く、実用的なものばかりなので嬉しい限り。一応、Flash8向けに書かれていますが、Flash MX2004でも十分流用可能ものばかりなので一安心。(ただし、付属のサンプルCDはflash8形式で保存されているのでそれ以下のバージョンだと開けません…)

ただ、本書はあくまでサンプル集なので、オブジェクト指向言語の概念の説明や、各種クラスのメソッドやプロパティの説明はほとんど無いので、事前にある程度オブジェクト指向言語を知っておく必要があります。またメソッドやプロパティを調べるためにリファレンスブックは必須です。(リファレンスブックはActionScriptビジュアル・リファレンスがオススメ。プログラミング初心者には正直キツイですが…)

2007年02月06日

flashでデスクトップツールを作成。

flash用コンポーネントGIZMO。仕事で使うかもしれないので、勉強がてら紹介。

GIZMOとはFlashの拡張機能で、今流行りの(?)ウィジェット(ガジェット)を作成することが出来ます。Flashでデスクトップツールを作っても需要無さそうだと思ったけれど、色々と調べてみたら、Flash単体では不可能であるディレクトリの作成やファイルの書き出し機能があるみたいで、本格的なアプリケーションも制作可能かも。ステージサイズの大きなアプリを作ると重いのが難点だけど。

2007年01月20日

ポケモンFlashサイト。

ポケットモンスターが登場してからかれこれ10年経つというわけなのでポケットモンスター ダイヤモンド・パール公式サイトを紹介。さすがにポケモンで遊ぶ歳でもないので肝心のゲームにはあまり興味がないのだけど、このサイト自体はよくできていると思った。(これだけシリーズ化されているってことは出来の良いゲームなんだろうけど。)

まず、最初に目を引いたのがwebサイトのテイスト。ゲームと同じくドット絵でデザインされているので、ゲームユーザーにはとても親しみ易く、また、ゲームをしないユーザーにも斬新なコンテンツとして魅力を感じられる作りとなっている。サイト初回訪問時にキャラクターを作成し、そのキャラクターを操作しコンテンツ内を見て回るのだが、これがまたゲームに忠実な挙動になっていて他のサイトにないワクワク感がある。サウンドもゲームに使われていた物を使っている(多分初期ポケモン)ので昔からのファンには嬉しい要素だろう。

操作しているだけでも楽しいのだが、このサイトには大きな特徴が2つある。1つはデータベースとしての価値があるということ。もう1つは多人数参加型サイトであるということだ。

このサイトの情報量は相当なものだ。過去のシリーズのオープニング映像やテレビCM、ポケモンの辞典、ゲームサウンドなど様々な情報を扱っている。全てを見て回るには数時間は要する。

個人的に興味を引いたのが、オンラインゲームのように複数のユーザーと画面を共有できる仕組み。基本的には、クライアント単体で処理しているのだが、一部コンテンツでは複数のユーザーが画面を共有する。しかし、この仕組みには参加人数が多くなるとサーバー側の処理が追いつかなくなる(画面を共有するので常にサーバーにアクセスする必要がある為)という欠点がある。このサイトではその欠点を逆に利用し予約システムを採用している。ユーザーは任意にコンテンツを予約し、時間が来たらそのコンテンツに参加できるのである。そうすることでアクセスが分散されサーバーの負担が減るというわけだ。ちなみに予約の待ち時間というのがリアルで、込み具合によっては数時間待つことになる。待っている間に他のコンテンツを見たりして時間をつぶすのも楽しい。また、予約はサイトを閉じても有効なので、別のサイトに行くことも可能だ。

このサイト、ミニゲームもいくつか入っているんだけど、これを発展させてサイト上で動作するポケモンとか作ったら面白いかも。サイト上で対戦とかできたら手軽だしいいと思う。

2007年01月06日

blogをFlash化するにあたり…

blogをflash化するということは、必然的にmovabletypeが吐き出すxhtmlファイルをflashに読み込んで処理することになると思うが、問題点が浮上。。。

FlashのDOM(XMLを操作するための仕様)がlevel1までしか対応してないことがあげられる。しかも、level1で最も使えるメソッドであるdocument.getElementsByTagNameが使えない。つまりFlashでノードを操作する際は、childNodesで辿っていく必要がある。

しかし、XHTMLの性質上のちのちソースに手が加わり、構造が大きく変わる可能性があるので、childNodesでノードを辿る方法は汎用性が無いので実用的ではない。

というわけで、自作でgetElementById、getElementsByTagName作ってみようかなと。完成したら配布する予定ですのでよろしくです。

--追記--
Flashとmtを始めから連携させることが前提であれば、エントリーの出力ファイル形式をxmlにすれば結構楽に実現できそうかも。

2006年12月28日

ks-product フルFlash化計画

もしかしたら、近々ks-productをフルFlash化するかもです。
もちろん、ブログもFlash化するつもりでいます。現行のXHTMLサイトも引き続き更新していきます。

果たしてうまくいくか。。。

2006年12月11日

早くもactionscript3.0リファレンスが!

ActionScript 3.0ゲームプログラミングブック

flash9発売前だというのに、早くもactionscript3.0のリファレンスが発売されました。アマゾンレビュー見ても結構好評らしいのでこれからas3.0を学ぶ人は持っておいて損は無いかと思います。(たぶん。)

2006年11月24日

uniqlo : ユニクロ Flashサイト

ユニクロのオフィシャルサイト。yugop.comでおなじみの中村勇吾氏が手がけている。
http://www.uniqlo.com

画面右の「UNIQLO EXPLORER」が斬新。 画面推移が特徴的なので、見てて楽しい。
しかし、コンテンツの性質上、目的の物を探しにくい。別途カタログサイトが用意されているので、あくまで雰囲気を楽しむというコンセプトで作られているのであろう。

ただ、現段階では明らかに設計ミスかと思われる部分もある。
「UNIQLO EXPLORER」内の画面左のメニューで、カテゴリ別表示が可能である。 その中の商品を選ぶことで、その商品の読み込みが始まるが、その間も他の商品が選べてしまう。一つ前の読み込みをキャンセルして読み込むのであれば問題ないのだが、そうではなく同時に読み込まれてしまう。
つまり、商品を次々とクリックしてしまうと、いくつもの商品が読み込まれてしまい、動作が極端に重くなってしまう。
ユーザーが多いサイトなので、こういった脆弱性は早急に修正したほうがよいかも。

2006年11月16日

Flash : as2.0 → as3.0になることで。。。

flash player 9が公開されて数ヶ月。
flash player 9から使用可能になったactionscript3.0を使ったコンテンツも増えてきました。
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=5204&forum=20

上記Flashではas2.0とas3.0の比較がされていますが、as3.0になることで動作速度が最大10倍とのこと。つまり、いままでスペック上諦めていた表現も可能になるわけです。

パーフォーマンスが大幅に向上したのはいいけど、それなりにリスクもある模様。。。
as1.0/as2.0とas3.0は互換性が無いとのこと。
as1.0/as2.0はAVM1、as3.0はAVM2という仮想マシンで実行されている。
flash player 9にはAVM1、AVM2両方が内蔵されているので、今までのコンテンツも再生することは可能だが、稼動する仮想マシンは一つだけなので、as2.0で書かれたコードにas3.0のコードを追記する(その逆も)ことはできないらしい。

互換性が無いと言う事で想像できたかと思うが、as3.0は使用できるメソッドやプロパティもだいぶ変わる模様。例えば...

  • MCインスタンスに直接イベントハンドラメソッドを設定できない。(イベントリスナーを使う)
  • _global、eval()、LoadVarsクラス等、使用頻度が高かったメソッド、プロパティ、クラスの廃止。それに伴い新たなメソッド、プロパティ、クラスの追加。
  • 数値型の追加。(int、uint)

などなど。。。詳しくは下記サイトを参考にしてください。
http://web.mac.com/ymori.com/iWeb/AS3/AS3Blog/AS3Blog.html
http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=5225&forum=20

今回のバージョンアップで、より本格的な言語になったので、初心者お断りって感じですね。。。
幸い、次期flash playerでもas2.0のサポートはしていくらしいので、必要に応じてas3.0にシフトしてけばいいかなと。

そんなことより、金がなくて未だに、flash 2004 MXからバージョンアップできてない。。。どうしてくれようか。。。

こんなサイトを作れるようになりたい。。。

中村勇吾氏が手がけたサイト。
http://www.nagaoka-id.ac.jp/gallery/gallery.html
個性的なインターフェイスだけど、マウスホイールでぐりぐり直感的に操作可能。
flashサイトってマウスホイールに対応してないサイトが多いから、こういうのはとても便利。

このサイトはamazonのAPI?を利用したflash。ベータ版なのか、一部機能しない部分があるが面白い。
Flash player 9以上対応で、actionscript3.0を利用している。
http://amaznode.fladdict.net/

本文終了▲