トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     ActionScript 3.0ではどう書くの?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.27177
投稿日時: 2006-7-22 11:42
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
ActionScript 3.0ではどう書くの?
今までActionScript 1.0や2.0で書いていたスクリプトが、ActionScript 3.0ではどうなるのかというQ&Aのスレッドとして立てました。

基本的な書き方のパターンを、確認することが主眼です。したがって、今自分がブロジェクトで書いているスクリプトを、丸ごと質問として投稿するのはお控えください(プロジェクト固有のご質問でしたら、別スレッドで)。ポイントになる部分を抽出して確認することが、問題の整理のうえでも、また十分な理解のためにも大切です。

まずは、参考サイトをご紹介します。

ActionScript 3.0のごく基本的な約束事については、「ActionScript 3.0書き方教室」をお読みください。ActionScript 3.0について日本語で書かれた情報としては、Adobeの上条さんのblog「akihiro kamijo」が詳細です。また、F-siteには「AS3」のカテゴリが新設され、サンプルスクリプトなどが投稿されています。さらに、Flash OOP Japanのトップページに、ActionScript 3.0についての記事を書いているメンバーのblogがリンクされています。


----------------
 

野中文雄
Åê¹ÆNo.27179
投稿日時: 2006-7-22 11:45
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ActionScript 3.0ではどう書くの?
お題:「イベントハンドラメソッドMovieClip.onReleaseは、ActionScript 3.0ではどう書く?」

まず、これまでの書き方です。

■ActionScript 2.0の場合
// メインタイムライン
// フレームアクション
// MovieClipインスタンスmy_mcを配置
var my_mc:MovieClip;
my_mc.onRelease = function():Void {
	trace(this);  // 出力: _level0.my_mc
};

ActionScript 3.0では、MovieClipインスタンスに直接イベントハンドラを設定することはできません。イベントリスナーを、使う必要があります。考え方は、バージョン2アーキテクチャ(ActionScript 2.0)のコンポーネントと似ています。なお、「ActionScript 3.0書き方教室」をご参照ください。

■ActionScript 3.0定義済みクラスを使った場合
// メインタイムライン
// フレームアクション
// MovieClipインスタンスmy_mcを配置
// [0]本来は必要。ただし、タイムラインでは省略可
// import flash.display.MovieClip;
// import flash.events.MouseEvent;
// [1]イベントリスナーの登録
my_mc.addEventListener("click", click);
// [2]リスナー関数の定義
function click(eventObject:MouseEvent):void {
	trace(eventObject.type, this.name);  // Output: click my_mc
}

もっとも、クラスを定義すれば、インスタンスに対してonReleaseハンドラを設定することは、できないこともありません。

■ActionScript 3.0クラス定義を行った場合
// ActionScript 3.0クラス定義: MyButton.as
package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	public class MyButton extends MovieClip {
		var onRelease:Function = function (){};
		function MyButton() {
			addEventListener(MouseEvent.CLICK, click);
		}
		function click(eventObject:MouseEvent):void {
			onRelease(eventObject);
		}
	}
}

// メインタイムライン
// フレームアクション
// MovieClipインスタンスmy_mcを配置
// my_mcのシンボルには[Class]としてMyButtonを設定
my_mc.onRelease = function (eventObject:MouseEvent):void {
	trace(eventObject.type, this.name);  // Output: click my_mc
}


----------------
 

森 巧尚
Åê¹ÆNo.27181
投稿日時: 2006-7-22 12:33
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: ActionScript 3.0ではどう書くの?
ActionScript3.0のスクリプトって具体的にどう書くんだろう、
というあたりを整理したかったので「ActionScript3.0のサンプル集」をブログ形式で作ってました。

ActionScript3.0のサンプル集

まだ制作中ですけど。


----------------
森 巧尚
http://www.ymori.com

tatsu
Åê¹ÆNo.27183
投稿日時: 2006-7-22 13:36
半人前
居住地: 名古屋
投稿: 53
使用環境:
MBP"17(C2D) 2.8Ghz,4GB
Leopard10.6.4
WEB Premium CS4 + Flash CS5
Re: ActionScript 3.0ではどう書くの?
別飛び立てていただいてありがとうございました。
AS3は解らないことだらけなので上記であげられているサイトを参考にさせて頂きます。
Duke15
Åê¹ÆNo.27196
投稿日時: 2006-7-22 17:45
常連
居住地: 埼玉
投稿: 196
使用環境:
XPpro,2Kpro,
MX2004prov7.2
FlashPro8
Flash9Preview α
Player8r24
Player9.0.16
Player7r63
Firefox1.5.0.5
IE6,NB8.1en
Re: ActionScript 3.0ではどう書くの?
ちょっと、質問ですが、教えて頂きたいのですが、
import flash.display.MovieClip;を
MovieClipの親のクラスで
import flash.display.Sprite;
こうしておいて、

クラスを
public class MyButton extends MovieClip{
とするところを
public class MyButton extends Sprite{
とすると何か問題がありますか?

今まで、ActioScriptではMovieClipが言葉として使われていると
思いますが、ここでSpriteという言葉が出始めましたので
何か、解説出来ましたら、お願いします。

引用:

中略
■ActionScript 3.0クラス定義を行った場合
// ActionScript 3.0クラス定義: MyButton.as
package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	public class MyButton extends MovieClip {
		var onRelease:Function = function (){};
		function MyButton() {
			addEventListener(MouseEvent.CLICK, click);
		}
		function click(eventObject:MouseEvent):void {
			onRelease(eventObject);
		}
	}
}

中略


----------------
site:
http://www.yumenext.com/
blog:
http://star.ap.teacup.com/flash/

野中文雄
Åê¹ÆNo.27197
投稿日時: 2006-7-22 18:43
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ActionScript 3.0ではどう書くの?
インスタンスを動的に生成するような場合には、Spriteクラスを継承すれば通常問題は生じないと思われます。Spriteクラスとそのインスタンスの動的生成については、F-site「new演算子でビジュアルオブジェクトをつくる」およびそこに引用した情報をご参照ください。

実際上問題になるのは、クラスをシンボルに定義した場合です。Spriteクラスはタイムラインをもちませんので、第2フレーム以降を作成しても再生されません。また、フレームアクションを記述すると、エラーになります(コメント区切り記号//だけでもNGのようです)。
引用:
Duke15さんは書きました:
import flash.display.Sprite;
こうしておいて、

クラスを
public class MyButton extends MovieClip{
とするところを
public class MyButton extends Sprite{
とすると何か問題がありますか?


----------------
 

Duke15
Åê¹ÆNo.27198
投稿日時: 2006-7-22 18:57
常連
居住地: 埼玉
投稿: 196
使用環境:
XPpro,2Kpro,
MX2004prov7.2
FlashPro8
Flash9Preview α
Player8r24
Player9.0.16
Player7r63
Firefox1.5.0.5
IE6,NB8.1en
Re: ActionScript 3.0ではどう書くの?
有難う御座いました。
以下、参考になりました。
引用:
また、
Splite クラスと MovieClip クラス」も参考になりました。


----------------
site:
http://www.yumenext.com/
blog:
http://star.ap.teacup.com/flash/

Duke15
Åê¹ÆNo.27508
投稿日時: 2006-7-30 14:04
常連
居住地: 埼玉
投稿: 196
使用環境:
XPpro,2Kpro,
MX2004prov7.2
FlashPro8
Flash9Preview α
Player8r24
Player9.0.16
Player7r63
Firefox1.5.0.5
IE6,NB8.1en
Re: ActionScript 3.0ではどう書くの?
Sprite クラスとMovieClip クラスの違いは分かりましたが、
もう一つ、質問ですが、
Shape クラスとSpriteクラスの違いは何なのでしょうか?

引用:

Spriteクラスはタイムラインをもちませんので、第2フレーム以降を作成しても再生されません。また、フレームアクションを記述すると、エラーになります(コメント区切り記号//だけでもNGのようです)。


----------------
site:
http://www.yumenext.com/
blog:
http://star.ap.teacup.com/flash/

野中文雄
Åê¹ÆNo.27514
投稿日時: 2006-7-30 20:47
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ActionScript 3.0ではどう書くの?
取りあえず、ActionScript 3.0 Language ReferenceのClass Shapeに説明されているとおりだと思います。

参考:「Shapeクラス
引用:
Duke15さんは書きました:
もう一つ、質問ですが、
Shape クラスとSpriteクラスの違いは何なのでしょうか?


----------------
 

Duke15
Åê¹ÆNo.27516
投稿日時: 2006-7-30 21:19
常連
居住地: 埼玉
投稿: 196
使用環境:
XPpro,2Kpro,
MX2004prov7.2
FlashPro8
Flash9Preview α
Player8r24
Player9.0.16
Player7r63
Firefox1.5.0.5
IE6,NB8.1en
Re: ActionScript 3.0ではどう書くの?
野中さん、
以下の参考の中の
------------
Spriteクラスもgraphicsプロパティをもち、Shapeクラスにはない機能が備わっています。たとえば、SpriteオブジェクトはDisplayObjectContainer (訳者注: のサブクラス)です。他方、Shapeオブジェクトはそうではありませんので、子のDisplayObjectをもつことはできません。このため、 ShapeオブジェクトはSpriteオブジェクトと比べて、同じグラフィックスをもたせても、メモリ消費は少なくて済みます。
------------
これを教えていただき有難う御座いました。

MovieClipクラスのMovieClipはタイムラインが使え
SpriteクラスはDisplayObjectが使える(もちろんMovieClipもですが)
ShapeクラスのShapeはDisplayObjectは使えない。
大まかにいうとこんなことですかね。
引用:

野中文雄さんは書きました:
取りあえず、ActionScript 3.0 Language ReferenceのClass Shapeに説明されているとおりだと思います。

参考:「Shapeクラス


----------------
site:
http://www.yumenext.com/
blog:
http://star.ap.teacup.com/flash/

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops