dポイントプレゼントキャンペーン実施中!

質問です。
現在、flash lite1.0の作成をしているのですが、
flash8で作成したゲームをliteバージョンにしたいと考えております。
そこで

on (press) {
this.play();
_root.addScore();
}

この上記のスクリプトをlite仕様にしたいのですが、
どの様に変更したらいいのか、お分かりの方がいましたら
単刀直入に、スクリプトを記述して
ご返答の程宜しくお願いいたします。

A 回答 (2件)

#1です。



どうもすみません。
罵倒したかもしれませんが,全く怒ってはないのですよ。

わかっている方がしてもおそらく無理なことを,
わかっていない方がするのは絶対無理だと説明したかっただけです。
人の書いた物を取ってきて,変造しただけで簡単にできるものではないよ。
という当たり前の本心を書いただけです。

どうも真剣にやっていると,語彙がきつくなりますね。反省致します。


今も,別に怒ってはないですが,
しかし,反省とともに,
「そしたら,なんで???」
という少し嫌な気にはどちらかというとなっています。


> 入らなければ,おかしいですよね,普通の人として。
> それがないということは,
> そもそも addScore() の意味がわかっていないということだと思います。

と書いているでしょう。
だから,わかっていないと思っていたから決して怒っていなかったのですが,
わかっていたらなぜ一言書かないのですか。

人を試しているのですか?
という怒っているというより,疑惑の念が非常に強くなります。
あなたが勝手に作った物を理解しろというのですか?
また説明しろというのですか?

と書くと,
また怒っているように見えますよね。
怒っているのではなくて,頭の中で私がそうつぶやいているだけですよ。

#1の補足に特に補足質問は見受けられませんでしたが,
言葉足らずで,不愉快な気分にさせてしまった,お詫びと#1の補足して,この#2を書かせていただきました。

この回答への補足

こちらこそ勘違いをして失礼いたしました。

補足質問をしたいところでしたが、怒っていると見受けておりましたので
控えさせていただいていました。

急いでいたため、余裕が無く説明不足になってしまい反省しております。

ゲームの得点スコアーで、シーン1に
function addScore() {
score+=10;
}
function decScore() {
score-=10;
}

と記述しております。
敵キャラが三種類いて、倒すと+10になるものと-10になるもの。

そしてシーン1→ムービー→ボタン となっており
そのボタンに

on (press) {
play();
call(16);
}

と記述しおります。
この16フレーム、call指定をしたフレームにはどのように記述したら良いのでしょうか?

ご伝授宜しくお願い致します。

補足日時:2007/01/10 14:18
    • good
    • 0

flash lite1.0 ですか。



> flash8で作成したゲームをliteバージョンにしたいと考えております。

単刀直入に言うと無理です。
質問の感じから推測して,
おそらく,書かれているスクリプト自体の意味もわかっていらっしゃらないと思います。
つまり,書かれているスクリプトは質問者さまが考えられたスクリプトではありませんね,おそらく。
したがって,無理です。

Flash Lite 1.0 なら 1.0 ように根本的に最初から考えて作らないとできません。
書かれているスクリプトを質問者さま自信が書かれたのであれば,
その 10 倍くらい頭を使って Flash Lite 1.0 で最初から考え直して作ると,
ひょっとしたらできるかもしれませんが,そうでない限りおそらくできません。
10 倍くらい頭を使っても無理な物は無理ですよ。
出来る可能性があるというだけです。


======================


とりあえずできるところまで,
書かれているスクリプトを Flash Lite 1.0 に変換してみますと,
こうなります↓。

-------------------------------
on (press) {
play();
call(行かないフレーム);
}
-------------------------------


まず,

 this.play();

ですが,これは,日本語で書くと,

 この階層 . 再生開始();

です。
Flash Lite 1.0 のスクリプトは,
そのスクリプトが存在する階層にしか,直接命令を出せません。

this.play(); とか _root.play(); とか _root.myMC.play(); とか

こういう書き方はできません。
play(); という関数は,
自分自身の階層のみみ対しての命令にしか単独では使えないのですが,
たまたま, this.play(); なので,
this を取って,play(); だけにすれば良いだけです。
しかし,
もし,他の階層に play(); という命令を出す場合は,
tellTarget を使わなければなりません。

Flash Lite 1.x ActionScript リファレンスガイド
「tellTarget()」
http://livedocs.macromedia.com/flash/8_jp/main/0 …



次に

 _root.addScore();

ですが,これも日本語で書くと,

 根階層 . ユーザー定義関数 addScore を実行();

です。
わかりますか?
addScore() なんてスクリプトは Flash に元からある関数でもメソッドでもありません。
addScore() は,そのスクリプトを書いた方が勝手に作った関数の関数名です。
どんな関数なのかはさっぱりわかりません。
ですから,

 call(行かないフレーム);

と変換するしかないのです。

Flash Lite 1.x ActionScript リファレンスガイド 「call()」
http://livedocs.macromedia.com/flash/8_jp/main/0 …


addScore() という関数は,
_root のどこかに

-------------------------
function addScore(){
 // ~なんたらかんたら~
}
-------------------------

などの形で勝手に定義されていると思います。
その
「 ~なんたらかんたら~ を実行しなさい」
というのがボタンの中の _root.addScore(); です。

Flash Lite 1.0 ではユーザー定義関数は使えません。
その代わりに,フレームにスクリプトを用意して置いて,
違うフレームから そのフレームのスクリプトを呼び出す call関数 があります。
ですから,
もしアニメーションが 10 フレームしかなければ,
決して行くことはない フレーム11 を作成して,そこに,
~なんたらかんたら~ を書いておいて,
ボタンから,そのフレームのスクリプトを呼び出す形になります。



======================

しかし,
ご質問にあるスクリプトを質問者さまが書かれたのあれば,
一言,
「addScore() はユーザー定義関数で,こんな意味のことを書いています。」
のような注釈が入るはずです。
入らなければ,おかしいですよね,普通の人として。
それがないということは,
そもそも addScore() の意味がわかっていないということだと思います。
したがって,
単刀直入に Flash 8 を Flash Lite 1.0 に作り替えるのは無理だと思います。
上の例でも,
フレームを1フレーム追加するという,ムービーの作り替えになっていますが,
普通はムービーの構造自体から Flash Lite 用に考えてつくらないとできません。
ActionScript のみの書き替えだけでなんとかなるような甘い物ではありません。

この回答への補足

かなりの罵倒のお言葉を頂きましたが
残念ながら、意味を理解しております。

お怒りに触れたようで、冷静さを失うような状況にありながら
詳しく解説して頂いた事には感謝いたします。

只、もう少し心にゆとりを持たれた方がいいと思います。
普通の人なみに。

沢山の質問者の方に回答しているところから
知識は豊富なのだと思いますが、少々難癖があるように思います。

補足日時:2006/12/28 23:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!