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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     Re: Functionの中のFunction (from:迷える子羊の部屋)
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.1604
投稿日時: 2003-11-25 12:19
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Functionの中のFunction (from:迷える子羊の部屋)
[迷える子羊の部屋]のご質問から部屋を移行しました。

抽象的にご質問いただくと、お答えも抽象的にならざるをえません。実装とか原理を議論する場合を除いて、お話がわかりにくくなるのが通常です。

functionブロック内にfunctionを入れ子に(ネスト)することは、とくに問題はありません。ただし、これはfunctionを呼出すたびに、新たなfunctionを「生成する」処理になります。

ですから、動的に内容の異なるfunctionを作成したい場合とか、複数のfunctionをそれぞれ別個の場所(インスタンス)に設定したい場合に用いられます。

時間待ちであれば、単にfunction間のリレーに過ぎないと思われますので、構成は違ってくるのではないでしょうか。
引用:
cobutaさんは書きました:
Functionの処理途中に、時間をゲットするFunctionを入れて、ゲットした時間を使って処理を続けていきたいのですが、イメージ的には、時間をゲットするFunctionに飛んでゲットしたら戻ってきて、その値を持って処理を続ける、という感じだと思います。

すでに作成されている具体的なスクリプトを提示された方が、よいように思います。
引用:
今のところ、時間をゲットして、処理を続けてくれているようなのですが、どうも自分の中で、その辺の動きというか、考え方がよく分からないので、投稿させていただきました。


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

森 なおき
Åê¹ÆNo.1606
投稿日時: 2003-11-25 12:32
モデレータ
居住地: 福岡(心は大阪)
投稿: 527
使用環境:
:MacOSX10.6.8
:FlashCS5.5
Re: Functionの中のFunction (from:迷える子羊の部屋)
なおきです。野中さん、移動しての回答ありがとうございます

おそらく、cobutaさんの質問から推測するに別々にfunction定義をし、それらのうちの一つからもう一方のfunctionを利用していると言うことだと思います。そして、これ自体は何の問題もないですが、そのfunctionの処理タイミングを気にされているということでしょうね。

例えば、gotoAndPlay();はビルトイン関数と呼ばれるものの一つですが、これ自体はユーザーが使いやすいようにあらかじめセットされているものです。(※もっとも自作できるかと言われると別問題ですが(^^;)ですので、自分で定義した関数とある意味、違いはありません。よって、原則として自分で定義したと言うことを意識する必要はないです。

もっとも、定義をどうするかというのはActionScriptの理解を深めないとわかりにくい部分もありますので簡単とは言えませんが。

今回の場合は、こういう話をしても混乱されるだけだと思いますので、野中さんもおっしゃるようにスクリプトを具体的に書いていただくのがいいですね。


----------------
な お き
Dev.:MacOSX+FlashCS5.5
View:---

cobuta
Åê¹ÆNo.1621
投稿日時: 2003-11-25 16:43
半人前
居住地:
投稿: 47
使用環境:
IE6
Re: Functionの中のFunction (from:迷える子羊の部屋)
Condoさま、Fumioさま、naokiさま

ご回答ありがとうございます。

maritaさま

場違いの質問をお許しください。
自分が初心者だと思っているので、【初心者専用】のところに出してしまいました。
以後、気をつけます。


↓スクリプトです。(顔から火が出そうなくらい恥ずかしいです。)

this.stop();

viewMessage();

function viewMessage(){

getTime();

if(theHour > 12){
gotoAndStop(10);
}else{
gotoAndStop(15);
}

}

//日時を取得
function getTime(){

//日にちを取得//
nowDate = new Date();
theYear = nowDate.getFullYear();
theMonth = nowDate.getMonth() + 1;
if(theMonth < 10){
theMonth = "0" + theMonth;
}
theDate = nowDate.getDate();
if(theDate < 10){
theDate = "0" + theDate;
}
TDate = theYear + "/" + theMonth + "/" + theDate;

//時間を取得//
nowTime = new Date();
theHour = nowTime.getHours();
theMinutes = nowTime.getMinutes();
if(theMinutes < 10){
theMinutes = "0" + theMinutes;
}
theSeconds = nowTime.getSeconds();
if(theSeconds < 10){
theSeconds = "0" + theSeconds;
}
TTime = theHour + ":" + theMinutes + ":" + theSeconds;
}

↑ここまでです。

今は時間だけをみて、別のフレームを飛ばそうとしていますが、追々機能を追加して、日にちでも分岐させようと思っています。
私の質問は、function viewMessageの中のgetTime();の結果を待ってからその続きを進めるようにする必要があるのでしょうか? という、内容です。
最初からスクリプトを掲載せず、お手数をお掛けして、大変申し訳ございませんでした。

ご教授の程、よろしくお願いいたします。
森 なおき
Åê¹ÆNo.1637
投稿日時: 2003-11-26 0:50
モデレータ
居住地: 福岡(心は大阪)
投稿: 527
使用環境:
:MacOSX10.6.8
:FlashCS5.5
Re: Functionの中のFunction (from:迷える子羊の部屋)
なおきです。
結論から言うとおっしゃるようなタイミングは気にする必要ありません。

それとは別に気になっているのですが、
nowDateとnowTimeは別に取得する必要はないと思いますよ。全てnowDateでまかなうといいのでは?

ところでこれって時計を作ってるんでしょうか?


----------------
な お き
Dev.:MacOSX+FlashCS5.5
View:---

cobuta
Åê¹ÆNo.1642
投稿日時: 2003-11-26 1:31
半人前
居住地:
投稿: 47
使用環境:
IE6
Re: Functionの中のFunction (from:迷える子羊の部屋)
なおき様

ご回答ありがとうございます。

いらぬ心配だと分かり、安心しました。

引用:
それとは別に気になっているのですが、
nowDateとnowTimeは別に取得する必要はないと思いますよ。全てnowDateでまかなうといいのでは?

そうなんですか 1つになるんだぁ...
頼った本には、日付の取得、時間の取得がそれぞれ別な項目として載っていたので、別物なのかと思っていました。
早速、合体してみます。

引用:
ところでこれって時計を作ってるんでしょうか?

いいえ、時計ではないです。
見る時間によって、違う道筋で進んでいく絵本みたいなものです。
なので、ちゃんと時間を取得できないと、先に進めなくなってしまうので、心配していたのです。
野中文雄
Åê¹ÆNo.1647
投稿日時: 2003-11-26 5:41
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Functionの中のFunction (from:迷える子羊の部屋)
このスクリプトですと、function内でfunction定義している訳ではありませんね。function呼出しは、いくらやっても構いません。

functionを呼出すと、その処理と結果を待って、以降のステートメントが実行されます。
引用:
cobutaさんは書きました:
function viewMessage(){
	getTime();

たとえば、以下のfunctionで、数字を2桁にするという処理は何度も出てきます。そういうときは、この処理を別のfunctionとして定義することも可能です。
//日時を取得
//日時を取得 
function getTime() {
	//日にちを取得// 
	nowDate = new Date();
	theYear = nowDate.getFullYear();
	theMonth = nowDate.getMonth()+1;
	theMonth = getTwoDigits(theMonth);
	/*
	if (theMonth<10) {
		theMonth = "0"+theMonth;
	}
	*/
	theDate = nowDate.getDate();
	theDate = getTwoDigits(theDate);
	/*
	if (theDate<10) {
		theDate = "0"+theDate;
	}
	*/
	TDate = theYear+"/"+theMonth+"/"+theDate;
	//時間を取得// 
	nowTime = new Date();
	theHour = nowTime.getHours();
	theMinutes = nowTime.getMinutes();
	theMinutes = getTwoDigits(theMinutes);
	/*
	if (theMinutes<10) {
		theMinutes = "0"+theMinutes;
	}
	*/
	theSeconds = nowTime.getSeconds();
	theSeconds = getTwoDigits(theSeconds);
	/*
	if (theSeconds<10) {
		theSeconds = "0"+theSeconds;
	}
	*/
	TTime = theHour+":"+theMinutes+":"+theSeconds;
}
// 数値を2桁の文字列で返す
function getTwoDigits(n) {
	var n_str = String(100+n).substr(-2);
	return n_str;
}


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

cobuta
Åê¹ÆNo.1654
投稿日時: 2003-11-26 12:31
半人前
居住地:
投稿: 47
使用環境:
IE6
Re: Functionの中のFunction (from:迷える子羊の部屋)
Fumio様

ご回答ありがとうございます。

引用:
このスクリプトですと、function内でfunctionを定義している訳ではありませんね。

質問の仕方が分かりにくくて、申し訳ございませんでした。
引用:
functionの呼出しは、いくらやっても構いません。functionを呼出すと、その処理と結果を待って、以降のステートメントが実行されます。

はい。それを聞いて安心しました。
引用:
たとえば、以下のfunctionで、数字を2桁にするという処理は何度も出てきます。そういうときは、この処理を別のfunctionとして定義することも可能です。

効率の良いプログラムを教えていただき、ありがとうございます。見ただけですぐに理解できる能力は、残念ながらまだ私にはないので、教えていただいた方法をこれから解析して理解します。
ありがとうございました。
野中文雄
Åê¹ÆNo.1658
投稿日時: 2003-11-26 13:23
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Functionの中のFunction (from:迷える子羊の部屋)
処理の経過が見やすいように、ステートメントを分け、traceアクションを入れてみました。
引用:
cobutaさんは書きました:
効率の良いプログラムを教えていただき、ありがとうございます。見ただけですぐに理解できる能力は、残念ながらまだ私にはないので、教えていただいた方法をこれから解析して理解します。

// 数値を2桁の文字列で返す 
function getTwoDigits(n) {
	var n_str = String(100+n);  // 100足して文字列に変換
	trace(n_str);  // 出力: 101
	n_str = n_str.substr(-2);  // 後ろから2文字取る
	trace(n_str);  // 出力: 01
	return n_str;
}
trace(getTwoDigits(1));  // 確認用/出力: 01


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

cobuta
Åê¹ÆNo.1661
投稿日時: 2003-11-26 15:43
半人前
居住地:
投稿: 47
使用環境:
IE6
Re: Functionの中のFunction (from:迷える子羊の部屋)
Fumioさま

引用:
処理の経過が見やすいように、ステートメントを分け、traceアクションを入れてみました。


ご親切に、何度もありがとうございます。
実は....訳わからなくて、結構あせってました。
バカの一つ覚えのようにif文しか使えない私には、到底考え付く事のできない内容ですね!
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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