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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     カレンダー生成について
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
blue
Åê¹ÆNo.14880
投稿日時: 2005-2-6 18:58
新米
居住地: 川辺
投稿: 19
使用環境:
★PC  : MACOS.9.2
★FLASH : FLASH MX
Re: カレンダー生成 [ 曜日の色付け ]
返信が遅くなってしまい大変申し訳ありません。

お教え頂きましたスクリプトを参考にさせて頂き
こうすれば無駄なテキストを省くことができるのだなあと
何度も最初に自分で書いたものと、
野中様からお教え頂きましたスクリプトを書いて見比べ
次に何かしら同じ状況のスクリプトを書くときにも
臨機応変に対応できるようにできれば!と思っております。

こちらのカレンダー生成スレッドの中で
スクリプトをスマートに書き、
また、パスなどの細やかな所までに気を配り
丁寧な視点をお教え頂いたり
教えて頂くたび世界がクリアになっていくようで
スクリプトの分からなかった点だけでなく
Flashのおもしろさも教えて頂いておりました

野中様、最後までお教え下さり本当にありがとうございました!
野中文雄
Åê¹ÆNo.14658
投稿日時: 2005-1-31 23:26
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: カレンダー生成 [ 曜日の色付け ]
スクリプトとして正しく動作しているようですので、とくに問題といえる点はなさそうです。
引用:
kuuさんは書きました:
野中様からお教え頂きました方法で日曜日、土曜日を取得し
下記スクリプトを作成すると各曜日のテキストの色を変化させることができました。

ただ、もっとすっきり書くことは、確かに可能です。
引用:
スクリプトをもっと要約し、綺麗に書ける方法があるはずだと思いながら
こちらの方で動作確認できました。

//---------------------------------------------------------
// MovieClip: シンボルt_date0
// 第1フレームアクション
//---------------------------------------------------------

theDate = _parent._parent.theDate;  // 相対パスを使用
num = Number(_parent._name.slice(6));
txt.text = num;
// 以下修正
// 第1ステートメントが相対パスなので、それに合わせましょうか
// nWeekDay = new Date(_root.theYear, _root.theMonth, num).getDay();
nWeekDay = 
new Date(_parent._parent.theYear, _parent._parent.theMonth, num).getDay();
// 日付けに色をつける
my_fmt = new TextFormat();  // 接尾辞_fmtをつけると便利
// 最終的に文字に使うカラーは1色
if (num == theDate) {
    my_fmt.color = 0xFFFFFF;
} else if (nWeekDay == 0) {
    my_fmt.color = 0xf20000;
} else if (nWeekDay == 6) {
    my_fmt.color = 0x1066de;
}
txt.setTextFormat(my_fmt);
//---------------------------------------------------------


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

blue
Åê¹ÆNo.14656
投稿日時: 2005-1-31 23:04
新米
居住地: 川辺
投稿: 19
使用環境:
★PC  : MACOS.9.2
★FLASH : FLASH MX
Re: カレンダー生成 [ 曜日の色付け ]
野中様、こちらの方でもお教え下さりありがとうございます。

曜日テキストの色を変えたく悩んでおりました。
野中様からお教え頂きました方法で日曜日、土曜日を取得し
下記スクリプトを作成すると各曜日のテキストの色を変化させることができました。


---------------------------------------------------------
// MovieClip: シンボルt_date0
// 第1フレームアクション
---------------------------------------------------------

theDate = _parent._parent.theDate;
num = Number(_parent._name.slice(6));
txt.text = num;
nWeekDay = new Date(_root.theYear, _root.theMonth, num).getDay();


//日曜日の日付けに色をつけるためのメソッドを作成

sunColor = new TextFormat();
with (sunColor) {
color = 0xf20000;
}

if(nWeekDay == 0){
txt.setTextFormat(sunColor);
}


//土曜日の日付けに色をつけるためのメソッドを作成

satColor = new TextFormat();
with (satColor) {
color = 0x1066de;
}

if(nWeekDay == 6){
txt.setTextFormat(satColor);
}


//当日であるときには文字色を白に

textFormat1 = new TextFormat();
with (textFormat1) {
color = 0xFFFFFF;
}
if (num == theDate) {
txt.setTextFormat(textFormat1);
}

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


スクリプトをもっと要約し、綺麗に書ける方法があるはずだと思いながら
こちらの方で動作確認できました。
さらに綺麗なスクリプトになるようつきつめ、
また、背景色も変えれるようもう暫く作成して参ります。
最初から最後まで、本当にありがとうございました
blue
Åê¹ÆNo.14654
投稿日時: 2005-1-31 22:46
新米
居住地: 川辺
投稿: 19
使用環境:
★PC  : MACOS.9.2
★FLASH : FLASH MX
Re: カレンダー生成について
剰余演算子%に関してお教え頂きましたサンプルを作成し
frとintervalの値を色々変えて出力しましたところようやくこちらの式の仕組みが分かりました!
先程試しておりましたところなのでまだ言葉があやふやになってしまうのですが

増加してゆく『fr』を『interval』で割ったとき、
余りのでないときにはx座標を進め、
余りのあるときはカウントして間隔をあける(←こちらの説明が下手で申し訳ありません)

という解釈であってますでしょうか?

また、野中様の『if/else if/elseアクションを使った処理
』も参考にさせて頂き
今日一日だけでもやもやしたものがすっきり晴れて本当に嬉しいです。

まだお教え頂きました『if/else if/elseアクションを使った処理
』の方を
より詳しく試しておりませんため、再度作って参考にさせて頂きます。
野中様、幾度も本当にありがとうございました!
野中文雄
Åê¹ÆNo.14635
投稿日時: 2005-1-31 17:26
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: カレンダー生成について
「何の」色を変えたいのでしょう? 背景色(MovieClipのカラー)ですか、テキストのカラーですか?

Date.getDay()メソッドを使えば、曜日を調べることができます。
引用:
kuuさんは書きました:
このサンプルでカレンダーを生成していきましたとき、
土曜日は××色に、日曜日は××色に、というスクリプトを書くにはどうしたらいいでしょうか?

// MovieClip: シンボルt_date0
// 第1フレームアクション
theDate = _parent._parent.theDate;
num = Number(_parent._name.slice(6));
txt.text = num;
nWeekDay = new Date(_root.theYear, _root.theMonth, num).getDay();
if (nWeekDay == 0) {
    trace(num + " is Sunday");  // テスト用
} else if (nWeekDay == 6) {
    trace(num + " is Saturday");  // テスト用
}
textFormat1 = new TextFormat();
with (textFormat1) {
    color = 0xFFFFFF;
}
if (num == theDate) {
    txt.setTextFormat(textFormat1);
}


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

野中文雄
Åê¹ÆNo.14633
投稿日時: 2005-1-31 16:52
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: カレンダー生成について
MovieClipシンボルを作成して、以下のスクリプトを第1フレームアクションに設定したうえで、動作および[出力]パネルの表示を確認してみてください。フレームレートは少し遅めにした方が、わかりやすいかもしれません。
// MovieClip: 2フレームおきに右方向に移動
// 第1フレームアクション
var fr = 0;
var interval = 3;
this.onEnterFrame = function() {
    trace(fr%interval);
    if (fr%interval == 0) {
        trace("進む");
        _x += 5;
    } else {
        trace("パス");
    }
    ++fr;
};

また、以下のノートのサンプルスクリプトが、剰余演算子%をもっとスタンダードな意味(割った余りを調べる)で使用しています。ご参考まで。
if/else if/elseアクションを使った処理
引用:
kuuさんは書きました:
剰余演算子%の式を再度調べ直しました。
こちらも前はなんとなくでしか覚えておりませんでしたためより使い方が分かりました。
なのですが、このサンプルの際の『(fr%interval == 0)』の意図するところを
ちゃんと理解しきれておりません
interval=1では、あっという間に生成し、
intercal=100では生成される時間が遅くなる、という結果を教えて頂き
仕組みはおぼろげながら分かった形なのですが
この式の意味をしっかりと説明できないままです。


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

blue
Åê¹ÆNo.14632
投稿日時: 2005-1-31 16:44
新米
居住地: 川辺
投稿: 19
使用環境:
★PC  : MACOS.9.2
★FLASH : FLASH MX
Re: カレンダー生成について
いくつもの質問を申し訳ありません

このサンプルでカレンダーを生成していきましたとき、
土曜日は××色に、日曜日は××色に、というスクリプトを書くにはどうしたらいいでしょうか?

方法として、x座標・y座標を7日周期で変更していく方法と同じように最初の曜日を取得し、
そこから土曜日の設定を7日周期で、日曜日の設定も7日周期で設定する方法を
思ったのですが、合っていますでしょうか?
その場合のスクリプトは
this["t_date"+i]._x = startX+((i+theDay-1)%7)*space;を変化させてできるかと
何パターンか組んでみたのですが式の構造自体が間違ってしまっているようで
動きませんでした。
この曜日設定を色でつけてあげたい場合にはどのようにすればいいでしょうか?
お尋ねするばかりで自分で見つけきれずなので
お教えいただける前に自分で解決できるよう頑張ります!
blue
Åê¹ÆNo.14631
投稿日時: 2005-1-31 16:34
新米
居住地: 川辺
投稿: 19
使用環境:
★PC  : MACOS.9.2
★FLASH : FLASH MX
Re: カレンダー生成について
Fla4man様、お教え下さり本当にありがとうございました。

引用:
下手にスクリプトを書くより12ヶ月の日数を配列にしたほうが
言語依存度も低くよいのではないでしょうか。


本当はFla4man様からお教え頂きました通り配列にして作成した方が
まだスクリプトに不馴れな場合いいのかなあと思います。
ただ、何年にも渡って使っていく場合
1ヶ月ごとに作成しなければならないという理由から
スクリプトでとの指示があり、組むことになりました。
配列で12ヶ月組む場合ですと月が変わる時用のスクリプトを組めば自動的に1年間、
動いてくれますでしょうか?
何度も質問してしまい申し訳ありません。
blue
Åê¹ÆNo.14630
投稿日時: 2005-1-31 16:23
新米
居住地: 川辺
投稿: 19
使用環境:
★PC  : MACOS.9.2
★FLASH : FLASH MX
Re: カレンダー生成について
野中様、お忙しい中ご返信くださり本当にありがとうございました。
野中様がご指示頂きました点をすべて試してみましたところ、
謎が解けていき、こういうことだったんだ!と
一層スクリプトのおもしろさに感嘆しておりました
また、
勉強不足なまま5段ぐらい飛ばした難易度のスクリプトを作らなければならなくなってしまい
未熟さがたくさん出てしまい恥ずかしい限りです。


引用:
forステートメントを使ったループ処理は、おわかりになりますか?



forのループ処理はなんとなくなのですが何度か試していたので
分かっていたつもりだったのですが
作りたいものの目的は分かったのですが内容がどうしても理解できませず
投稿させて頂きました。
野中様からお教え頂きました方法の方が簡潔で、後からみても分かりやすく
早速記述させて頂きました。
スクリプトの作り方でも柔軟な考え方が必要なのですね。


引用:
String.slice()メソッドを調べてご覧になりましたか?



こちらを投稿前、macromediaの方で調べたのですがちゃんと理解できず
野中様からお教え頂きました後で再度ネット上で調べましたところようやく分かりました。
この場合でしたら、生成されてゆく"date_x(x=日付け)"となり日付けだけ欲しいため
"date_"を取り除き、"x"を取り出しテキストに入れていくんですね!


引用:
剰余演算子%の意味は、おわかりになっていますか? そのうえで、変数intervalの値を1または100に変更して、結果をご確認ください。



剰余演算子%の式を再度調べ直しました。
こちらも前はなんとなくでしか覚えておりませんでしたためより使い方が分かりました。
なのですが、このサンプルの際の『(fr%interval == 0)』の意図するところを
ちゃんと理解しきれておりません
interval=1では、あっという間に生成し、
intercal=100では生成される時間が遅くなる、という結果を教えて頂き
仕組みはおぼろげながら分かった形なのですが
この式の意味をしっかりと説明できないままです。


引用:
他のカレンダーのサンプルをご覧になれば、また別のわからないスクリプトが登場することになるだけのような気がします。



本当にもっと基礎的なことを徹底的に勉強してから作成しなければです。
会社でFLASHのスクリプトを作成しているのですが周りにActionScriptを扱う方がおりませず、
また色々なサンプルを作っていく内に覚えなさいという方針のため
毎日未熟さを実感しております。
ですが、お教え頂き、スクリプトが分かりましたときの
あの嬉しい感じが忘れられず難しさに泣きながらも
これからもますます好きになりました。

本当にありがとうございました!
Fla4man
Åê¹ÆNo.14622
投稿日時: 2005-1-31 11:42
職人
居住地: かまくら
投稿: 517
使用環境:
WinMe,Win2000,
Flash4,アズさん,大仏、delphi
Re: カレンダー生成について
Flashで時間関数は良く使われるもののひとつですが
現段階でFscommand2が登場したため鬼門です。
使う場所はできるだけ一箇所に絞ったほうがよいと思います。

将来的にはFscommand2を使ったものがパソコン版でもつかえれば
そちらのほうがよいと思います。

今回

monthStr =

という配列の使い方をしているわけですから
下手にスクリプトを書くより12ヶ月の日数を配列にしたほうが
言語依存度も低くよいのではないでしょうか。


----------------
通常のハンドル名:×○○× ねた回収モードに突入 現在1/100

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

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