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

パスワード:


パスワード紛失

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

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
shikada
Åê¹ÆNo.30014
投稿日時: 2006-11-16 9:35
新米
居住地:
投稿: 14
使用環境:
WinXP Flash Professional 8
WinXP Flash 9 Public Alpha
Re: ActionScript 3.0ではどう書くの?
野中さん

ご返答ありがとうございました。

考え方が間違っていないとのことで、
ひとつ不安が解消されました。

引用:
以下のActionScript 3.0の記述で、とくに問題はないと思います。
処理が2段階になる訳ですから、関数がふたつあって不思議はありません。

同じ処理としてなるべく一括りにしたいところですが、
確かに、一つにまとめればいいという問題でもなさそうですね

引用:
ひとつにまとめれば「シンプル」かは、
多分に疑問はありますけど。


どうもありがとうございました
野中文雄
Åê¹ÆNo.30007
投稿日時: 2006-11-15 23:39
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ActionScript 3.0ではどう書くの?
functionの入れ子というのは、見やすくない面もあります。そういう場合、ActionScript 2.0でも、ふたつの関数に分けて書くこともできるでしょう。
var counter:Number;
function onRelease():Void {
	counter = 0;
	onEnterFrame = enterFrame;
}
function enterFrame():Void {
	trace(++counter);
	if (counter>10) {
		delete onEnterFrame;
	}
}

引用:
shikadaさんは書きました:
AS2では
onRelease = function(){
  var counter:Number = 0;
  onEnterFrame = function(){
    trace(++counter);
    if(counter>10){
      delete onEnterFrame;
    }
  }
}

のように、ひとつの関数内で完結できますが、

以下のActionScript 3.0の記述で、とくに問題はないと思います。処理が2段階になる訳ですから、関数がふたつあって不思議はありません。
引用:
AS3では
var counter:int;
addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);

function mouseUpHandler (e:MouseEvent):void{
  counter=0;
  addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}

function enterFrameHandler(e:Event):void{
  trace(counter++);
  if(counter>10){
    removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
  }
}

のように、
一度ボタン押下イベント関数を呼んでから更に
EntarFrameイベント関数を呼んであげなくちゃならない、
という認識なのですが、
ソースが冗長な感が否めません。
こういう書き方だと関数が矢鱈多くなってしまいそうなんですが、
認識としては合っていますでしょうか?

ひとつにまとめれば「シンプル」かは、多分に疑問はありますけど。
var counter:int;
addEventListener(MouseEvent.MOUSE_UP,
	function(e:MouseEvent):void {
		counter=0;
		addEventListener(Event.ENTER_FRAME,
			function(e:Event):void {
				trace(++counter);
				if (counter>10) {
					removeEventListener(Event.ENTER_FRAME, arguments.callee);
				}
			}
		);
	}
);

引用:
もっとシンプルに書ける方法、
別な書き方とかあるのでしょうか?


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

shikada
Åê¹ÆNo.29994
投稿日時: 2006-11-15 17:14
新米
居住地:
投稿: 14
使用環境:
WinXP Flash Professional 8
WinXP Flash 9 Public Alpha
Re: ActionScript 3.0ではどう書くの?
基本的なことかも知れませんが、質問です。。。

例えば、ボタンが押されたらEntarFrameイベントを発動させたい、
という場合、ボタンインスタンスのスクリプトは、

AS2では
onRelease = function(){
  var counter:Number = 0;
  onEnterFrame = function(){
    trace(++counter);
    if(counter>10){
      delete onEnterFrame;
    }
  }
}

のように、ひとつの関数内で完結できますが、
AS3では
var counter:int;
addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);

function mouseUpHandler (e:MouseEvent):void{
  counter=0;
  addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}

function enterFrameHandler(e:Event):void{
  trace(counter++);
  if(counter>10){
    removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
  }
}

のように、
一度ボタン押下イベント関数を呼んでから更に
EntarFrameイベント関数を呼んであげなくちゃならない、
という認識なのですが、
ソースが冗長な感が否めません。
こういう書き方だと関数が矢鱈多くなってしまいそうなんですが、
認識としては合っていますでしょうか?

もっとシンプルに書ける方法、
別な書き方とかあるのでしょうか?
よろしくお願いします。

野中文雄
Åê¹ÆNo.29231
投稿日時: 2006-10-7 23:23
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ActionScript 3.0ではどう書くの?
ActionScript 3 デビューセミナーF-siteセミナーの内容をベースに、加筆・補足するかたちでFlashデベロッパーセンターに「ActionScript 3.0書き方教室」を寄稿しました。ただ、一部に乱丁・落丁があります。落丁ページについては、私のサイトに暫定アップしています。

なお、「Web Designing」の11月号から、「次期Flashに搭載予定のActionScript 3.0をひと足先に解説」を3ヶ月連載で担当します。ご興味のある方は、店頭に並んだら手に取ってご覧になってください。


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

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/

野中文雄
Åê¹Æ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.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/

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/

野中文雄
Åê¹Æ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.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/

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

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