したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

魅惑のエロフラASスレ

1エロエロ大王 ◆/ERoERooY6:2008/04/20(日) 10:52:19 ID:uUVTDSoA
エロFlashに関するアクションスクリプト(AS)のお勉強スレッドでつ
MX、2004、8pro、CS3、ParaFlaなんでもこおい

私、管理人はASのエキスパートではありません 基本的な知識しかありませんorz
わからない事はみんなで調べたり考えたりしましょう

33エロエロ大王 ◆/ERoERooY6:2009/09/11(金) 03:14:41 ID:GiCuxNgw
そうだ とりあえずそっちのメインタイムラインの構造を
なるべく詳しく教えてくれ〜い

34柳葉魚:2009/09/12(土) 16:06:32 ID:4e4YUooc
報告いたします、大王様。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
レイヤー1(初期レイヤー)のフレーム1、キャンバスに・・・

this.stop();

charDir=0;
charAct="s";
charAct="w"; ←『//アクションの種類 s:stop w:walk』と書いてあったので、必要かと思い作りました。
charTg=this.charMC;

this.onEnterFrame=function(){
charMove();
        ←『後々、色々な機能を追加するときに〜』なので記入していません 
}


function charMove(){
if(Key.isDown(Key.UP)){
charDir=0;
charAct="w";
}else if(Key.isDown(Key.RIGHT)){
charDir=1;
charAct="w";
}else if(key.isDown(Key.DOWN)){
charDir=2;
charAct="w";
}else if(Key.isDown(Key.LEFT)){
charDir=3;
charAct="w";
}else{
charAct="s";
}
charTg.gotoAndStop(charDir + charAct);
}

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
キャンバスに配置したMC(インスタンス名:charMC)内部

レイヤー1、フレーム1 正面(下)向いている画像 AS、this.rstop();
      フレーム2 上を向向いている画像
      フレーム3 上を向いて歩いているMC
      フレーム4 右を向いている画像
      フレーム5 右を向いて歩いているMC
      フレーム6 下を向いている画像
      フレーム7 下を向いて歩いているMC
      フレーム8 左を向いている画像
      フレーム9 左を向いて歩いているMC

キャラMCの内部のフレームラベルは、
0s:上停止 0w:上歩行 1s:右停止 1w:右歩行…にしてあります。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

こんな感じです;;

35エロエロ大王 ◆/ERoERooY6:2009/09/12(土) 17:40:41 ID:vpcJh/2Q
おお いい感じだと思うけどな それで動かないのかい? パブリッシュしたらどんな感じになるんだい?

ウチの場合は… メインタイムラインの構成が
1f  予備
2f〜8f  メソッドの定義 function 関数名(){〜〜}
9f  変数の定義 charDir=0;等
10f  タイトル画面 this.srop(); this.onEnterFrame=function(){〜〜}
20f  ゲームプレイ画面
30f  ゲームオーバー画面
40f  むふふモード

てな感じの構成になってるお ASを記述するのは2〜10fまでだ
メインタイムラインが30fや40fに行っても 10fでのエンターフレームは
毎フレーム処理し続けるんだ その10fでのエンターフレームがメイン処理部となる

>charAct="w"; ←『//アクションの種類 s:stop w:walk』と書いてあったので、必要かと思い作りました。
作らなくていいんだお=3 charAct というストリング変数の中に w や s 代入されるんだい
変数の中身は処理によってコロコロ変わるのだ

36柳葉魚:2009/09/13(日) 18:32:28 ID:4e4YUooc
大王様、回答有難う御座います。
知らない事を知っていくと楽しいですね^^
大王様が優しく教えて頂けるおかげです!

大王様のを参考に、組み替えて試してみます。
また後日、報告します。

37柳葉魚:2009/09/17(木) 23:06:19 ID:4e4YUooc
お疲れ様です、大王様。ご報告申し上げます!

レイヤー1
1〜5f 何となく予備で空白
6〜7f メソッド定義 function charMove(){
        if(Key.isDown(〜
8〜9f 変数の定義 charDir=0;とか
10f キャラ操作開始 this.stop();
            this.onEnterFrame=function(){
            charMove();
            }; ←前回からここの"}"でエラー出てましたが、";"を付けたら改善しました。

レイヤー2
1〜5f 予備で空白
6〜10f キャラMC


一応これでうねうねとその場で歩けるようになりました。
方向キー押した後に離すと、きちんととその方向で止まります^^

しかし、なぜか10fでキャラが勝手に上を向いてしまいます。
MCになにか問題があると思うのですがわかりません;

38エロエロ大王 ◆/ERoERooY6:2009/09/20(日) 01:12:37 ID:Fd78nUOg
>なぜか10fでキャラが勝手に上を向いてしまいます。
どーゆー事だい? 開始直後に上向くのは当たり前だい
開始直後は下を向けたいんなら 変数の定義で charDir=2;として
最後の行にcharMove();を入れて1回実行させるのだ

それから基本的なスクリプトの勉強が足りないかもな〜
お勉強サイトとかでサンプル改造し挙動確認とかすると覚えるお
ここは見てる?
ttp://hakuhin.hp.infoseek.co.jp/main/as.html

がんがれ!

39柳葉魚:2009/09/20(日) 20:48:23 ID:4e4YUooc
お忙しい中、回答有り難う御座います。
そうでした、変数定義で下向く様に設定されている事を見落とし・・・いえ、理解していなかったですね。

また新しく、文字表示(アドベンチャーゲームの会話画面時)の事でお聞きしようとしましたが、
もっといろいろ探ってきます;
どうしてもわからなかった時はまた、ご教授お願い致しますm(_ _;)m
お勉強サイト教えていただき有り難う御座います。
移動以外のアクションは自分で出来る様にしたいですね^^

40エロエロ大王 ◆/ERoERooY6:2009/09/21(月) 14:00:34 ID:Fd78nUOg
いよお!
文字表示って1文字づつピピピピ…て出るあれかい?
あれはな初心者にはかなりムズイんだお しかしチャレンジし続けるのは良い事だ
上達するには作りまくるしかないのさあ

上下左右に歩く作品も敵出したりマップ歩かせたりどんどん機能追加していけば
いいと思うが… 1つのモノをある程度最後(遊べるモノ)まで完成させられないと
今後何1つ完成させる事はできんのだ 1こ完成させとけば次から似たようなのを
作るとき非常に楽なんだお みんなそうやって作品を量産しているのだ
これからもガンガレ

41柳葉魚:2009/10/03(土) 12:17:14 ID:4e4YUooc
大王様、こんにちは。お久しぶりです。
以前教えてくださったキャラ操作は、まだ少しずつ手を加えて
「完璧」を目指しております。

今回は、気が早いかも知れませんが、歩くスピードが速くなったりするような
「アイテムの配置」に悩んでいます。
キャラと同じように配置すると同時に動いちゃうんですね、
当たり前と思うかもしれませんが、私にとっては難しいです;
キャラを動かすASをどうにかすれば、切り分ける(キャラだけ動かす)ことが
出来るんじゃないかと思っております。

お忙しい中申し訳ないのですけど、よろしければまたご教授お願い致します。
みっともないですが、今出来ているFlashを貼り付けておきます。
ttp://sisyamo-flash.cocolog-nifty.com/blog/files/sanasana.swf

42エロエロ大王 ◆/ERoERooY6:2009/10/03(土) 12:35:16 ID:SzFOkaTw
おお 進歩してるようだな 乙っす〜

キャラ移動でキーの同時押しするとムーンウォークしてしまうようだな
キー入力関係のコードはオレのサンプル通りなのかい? だとしたらオレのミスだな
テストが足りなかったようだスマン ちなみにこれは12fpsなの?

なんでアイテムが移動するんだおww キャラと同じように配置したらダメに決まってんじゃん
アイテム云々の前に色々仕様について決めないとだめだな
・三国夢精と同じように移動時にマップは動かないのか?
・各マップでアイテムの出現場所は決まっているのか?(ランダムだと色々とやっかい)

アイテムの前にマップを作らないとダメだな 道、山があって行ける場所と行けない場所を
設定しなければならん ムーンウォークも直さないと…
でもまあ習作なんだし どうしてもアイテムから作りたいなら作るか
以下はアイテムに関してのアドバイス

43エロエロ大王 ◆/ERoERooY6:2009/10/03(土) 12:50:36 ID:SzFOkaTw
アイテムが最初から出現しているなら 最初のマップ表示時に配置する
配置には静的配置と動的配置があって
静的ってのは画面にそのままインスタンス名つけて配置しておく事
動的ってのはプログラム動作中に配置する事

まずは静的配置をやってみっか 画面の任意の位置にインスタンス名つけて
ただ配置するだけだ インスタンス名が「 itemMC 」だとしたら
毎フレームアイテムとヒットしたかどうか判定する

6〜7f メソッド定義 新たにメソッド作る
function hitCheck(){//ヒット判定メソッド
if ( _root.itemMC.hitTest( charTg._x, charTg._y, true )){//アイテムとヒットしたなら
trace("アイテムにヒット!!!!!!!!!!");
_root.itemMC._visible = false;//アイテム消す
//その他の処理 音出したり ステータス変化させたり…
}

}

10f キャラ操作開始 this.stop();
            this.onEnterFrame=function(){
            charMove();
            hitCheck();//新たに作ったメソッド実行
            };

アイテムのターゲットがわからんので _root.itemMCとした 違うなら修正してくれ
charTgは以前のサンプルのキャラのターゲット変数だ これも違うなら修正
今回のはテストしてない エラー出たら詳しく報告よろっすw

44柳葉魚:2009/10/08(木) 09:44:30 ID:4e4YUooc
おはよう御座います、大王様。
回答有り難う御座います!
私は結構、先走り過ぎて居るようですね;ごめんなさい。

>キー入力関係のコードはオレのサンプル通りなのかい?
 YES! でも一応、始めから組み直してみます;
>ちなみにこれは12fpsなの?
 NO! 10fpsです。


それでは本題です。
ASは教えていただいた通りに組み込んだのですが、
charMCとitemMCをどの様に"別"にするのか、わかりません;
別レイヤーにitemMCを配置しても、フレームがcharMCとかぶっていると、
また、同時に動かせてしまいます・・・。AS入力する場所が間違っているのかもしれません。

以前、私がお伝えした・・・
6〜7f メソッド定義 function charMove(){
        if(Key.isDown(〜
この場所に、function hitCheck(){//ヒット判定メソッド
        if ( _root.itemMC〜
を入力しました。

10fの所は、hitCheck(); を追加しただけです。
再生してもエラーは出ていません。
お恥ずかしいのですが、itemMCの配置場所を教えて頂けませんかTT

45エロエロ大王 ◆/ERoERooY6:2009/10/08(木) 11:44:32 ID:Uj7NoyA2
itemMCがなぜ動くのか謎だな…
おれのやり方は極力クリップアクションを使わないやり方だお?
MCクリックしてそこにコード書いたらダメなんだお MC自体に何か記述してない?
クリップアクション使うのはボタンだけだ その際もルートのフラグをon/offするだけ

itemMCは普通に10fに配置するんだ(別に10f以前でも可)
レイヤーはMC配置レイヤーでも作ってそれに置く(キャラ&アイテムMCをな〜)

10fのhitCheck();の次の行に↓記述してどんな値が出たか報告してくれ
trace( "cf: "+this._currentframe );//確認したらこの行は消す

>NO! 10fpsです。
最低20は必要だろ20にしとけ ウチは20 他のトコも20〜30が主流

46エロエロ大王 ◆/ERoERooY6:2009/10/08(木) 11:47:26 ID:Uj7NoyA2
ああダメだ 解決になってないなw 
その作品中のコードを全て張ってみてくれい フレーム毎にな
全部見ないともうワカラン

47エロエロ大王 ◆/ERoERooY6:2009/10/08(木) 12:01:51 ID:Uj7NoyA2
もしかして charMCの中にitemMC入ってるんじゃないだろうな…
これも一緒にトレースして値を報告してくれい〜
trace( "char: "+this.charMC+" item: "+this.itemMC );

48柳葉魚:2009/10/15(木) 14:09:49 ID:4e4YUooc
ご回答ありがとうございます。
説明不足でした、反省しています。ごめんなさい。
あと、MCの中には何も記入しない事は知っております。

レイヤーは3つです。上から・・・
「sanae」
1〜19fは空キーフレーム。20fにインスタンス名"charMC"を配置してあります。

「item」
1〜19fは空キーフレーム。20fにインスタンス名"itemMC"を配置してあります。

「AS」
1〜5fは空キーフレーム。
6〜10fに・・・
function charMove(){
if(Key.isDown(Key.DOWN)){
charDir=0;
charAct="w";
_y+=5;
}else if(Key.isDown(Key.LEFT)){
charDir=1;
charAct="w";
_x-=5;
}else if(Key.isDown(Key.UP)){
charDir=2;
charAct="w";
_y-=5;
}else if(Key.isDown(Key.RIGHT)){
charDir=3;
charAct="w";
_x+=5;

}else{
charAct="s";
}
charTg.gotoAndStop(charDir + charAct);
}


function hitCheck(){
if(_root.itemMC.hitTest(charTg._x,charTg._y,true)){
trace("アイテムにヒット!");
_root.itemMC,_visible = false;
//その他の処理 音を出したり ステータス変化 など・・・
}
}

11〜15fに・・・
charDir=0;
charAct="s";
charTg=this.charMC;

16〜20fに・・・
this.stop();
this.onEnterFrame=function(){
charMove();
hitCheck();
};


※this.onEnterFrame=function(){
charMove();
hitCheck(); の後に・・・

trace("cf:"+this._currentframe);
trace("char:"+this.charMC+"item:"+this.itemMC);
このASを記入して再生してみると、MCの表示がされなくなり、出力には・・・

---------------------
コンパイル時間: 00:00
0 エラー, 0 警告

cf:16
char:undefineditem:undefined
cf:16
char:undefineditem:undefined
cf:16
char:undefineditem:undefined
cf:16
char:undefineditem:undefined
cf:16
char:undefineditem:undefined......

と出てきました。
またわかりづらい所がありかもしれませんが、よろしくお願いします。

49エロエロ大王 ◆/ERoERooY6:2009/10/15(木) 18:53:09 ID:pt7PVlj.
undefinedってのは未設定の値って事なんだ 出力されるのは良くない
つまり何かが間違っているって事っす

>20fにインスタンス名"charMC"を配置してあります。
>20fにインスタンス名"itemMC"を配置してあります。
enterFrameが16fで回ってんのに20fに配置してたら正常に動作しないのは
当たり前なんだお〜〜
なんでそんな中途半端なフレーム位置になったんだっけか…
>>35みたいな構成にしなかったのかい

なんでトレースしただけでMCが表示されなくなるんだろな〜 フラメはよくわからんなorz

とりあえず charMCとitemMCを16fに配置してみるんだ

50柳葉魚:2009/10/17(土) 15:16:18 ID:4e4YUooc
>なんでそんな中途半端なフレーム位置に・・・
 そうですね。>>35の構成に合わせれば、大王様が仰るのを参考に組み立てていけば問題無いはずですね^^;
 私はそう考えずに「最低20は必要だろ」と言われたので、変に綺麗にキーフレームの幅をとってしまいました。
 何を気にしているんだ自分、気にする所が違ってました(−−;

それで、それぞれのMCを20fから16fに移動させて、再生したところ・・・

---------------------
コンパイル時間: 00:00
0 エラー, 0 警告

cf:16
char:_level0.charMCitem:_level0.itemMC
cf:16
char:_level0.charMCitem:_level0.itemMC
cf:16
char:_level0.charMCitem:_level0.itemMC....

と、またエラー文章が出てきました。
MCのレベルが0? 一体何がおかしいんでしょう・・・。

51エロエロ大王 ◆/ERoERooY6:2009/10/17(土) 18:43:42 ID:z5vLIjd.
0 エラーってのはエラー無しって事だお
_level0 ってのはAS1や2での _root(ルート)でありメインタイムラインって
意味なのさあ charMCとitemMCのターゲットが返ったので正常って事なんだけど…
これで動かないのかい? 相変わらずitemMCは同時に移動してしまうのかい?
それとも何も画面に写ってないのかい

理由がわからんな ライブラリからMCのリンケージとかいじってないよね?

52エロエロ大王 ◆/ERoERooY6:2009/10/17(土) 19:05:23 ID:z5vLIjd.
フリモの体験版DLしようと思ったら
※本体験版は30日間ご利用頂くことが可能です だっておw
1ヶ月じゃ全然短いな 柳葉魚が冬休みの時にでも集中して教えてやるお

初心者に限らず作る時は
1:まずは思いのままにノリで作っていく
2:不具合出たら なぜ出たのか調査する
3:見慣れないステートメントに遭遇したら研究&実験する
4:1に戻る その内完成!

研究ってのはヘルプ見たり ネットで調べるって事だ
わからなかったらすぐヘルプ見るようにしないとダメだ 専門用語とかもヘルプやネットで調べるんだお
実験てのは短いコード書いてステートメントの挙動を確かめる事
とにかく色々な事を知らなさ過ぎるみたいだな… 普段からヘルプを読みまくって親しむしかないお
がんがれ

53柳葉魚:2009/10/19(月) 19:43:23 ID:4e4YUooc
なるほど!出力の所に、繰り返してメッセージが出てきてしまうと
エラーなのかと自己完結してました。
無知なくせに、大王様を頼ってばかりの自分が恥ずかしいです。

画面にはMC映っているのですがcharMCとitemMCが同時に動かせてしまいますね。
リンケージなど手を付けてはいないです。

>冬休みの時にでも集中して教えてやるお
 お気持ちはとても嬉しいのですけど、冬休み・・・ありません。
 ごめんなさい。

改めて出直してきます!

54エロエロ大王 ◆/ERoERooY6:2009/10/19(月) 21:18:27 ID:SoqD3zGc
わかったああ!! 一緒に動く理由わかったお

if(Key.isDown(Key.DOWN)){
charDir=0;
charAct="w";
_y+=5;//<=====ここだ!!!!!!!

以前のクリップアクションのコードをそのままフレームアクションにしたからなのだ
気付かなかった 凡ミスだ申し訳ない 現在の状態はルート丸ごと移動してるって事なんだ

if(Key.isDown(Key.DOWN)){
charDir=0;
charAct="w";
charTg._y+=5;//きちんとターゲットを指定しないとダメなのだ

同じように key.UP, LEFT, RIGHTのとこも直してくれ〜い

>冬休み・・・ありません。
社会人だったんか〜いw まあ趣味でやるならプログラミングに
年齢は関係ないお がんがってくれ

55柳葉魚:2009/10/20(火) 16:40:47 ID:4e4YUooc
あああああ!そうかっ!そうだったのですね!
ご報告有り難う御座います!!m(_ _)m
Flashって「何でこんな事に気づかなかったんだろう」ってありますよね;
ありがとうございます>< 時間ある時にスグやってみます^^

>社会人だったんか〜いw
この歳でASわかっていない事が恥ずかしく感じます^^;

さあ がんがるぞぉ〜!

56エロエロ大王 ◆/ERoERooY6:2009/10/26(月) 22:37:40 ID:CwbEwK5k
がんがれ!

次回からこっちでも実際にテストして検証してみるお

57柳葉魚:2010/01/09(土) 16:45:09 ID:eKZ8oj1s
大王様、開けましておめでとう御座います。


スクリプトの「randam」にて「0.0」以後を切り捨てて
「0.0」だけを求めるはできるのでしょうか。
検索しているのですが、まったく解らないです。
ご存じで御座いましたら、教えていただけないでしょうか。
※上記の"0"は適当に入力したものです。

58エロエロ大王 ◆/ERoERooY6:2010/01/09(土) 18:12:25 ID:jzsC8dls
おお〜 久しぶりだな! あけおめ〜
0.0てなんだい 小数点の数値をランダムで出したいって事かい?

for ( var i=0; i<10; i++ ){//10回表示
var r2 = Math.floor( Math.random()*300 )/100;//小数点2桁まで
var r4 = Math.floor( Math.random()*30000 )/10000;//小数点4桁まで
trace( "\n2桁: "+r2+"\n4桁: "+r4 );
}

最近はどんなモノを作ってるんだい 報告よろっす〜

59柳葉魚:2010/01/10(日) 15:27:24 ID:eKZ8oj1s
有り難う御座います!

「0.0」はrandomで出した数値の例です^^;
なるほど、表示させたい数値を出してから割算で小数点を出すのですか。

>>最近は〜・・
色々と手をつけておりまして、最終的にまとめると
シミュレーションとアドベンチャーを合わせた作品を作ろうと思っています。

60エロエロ大王 ◆/ERoERooY6:2010/01/11(月) 10:29:12 ID:jzsC8dls
>シミュレーションとアドベンチャーを合わせた
なんか超大変そうなモンにチャレンジしてんな〜w
ADVは簡単だろうがシミュはむずいお… 戦略的なアルゴリズムみたいのが大変なんだ
ウチの作品では軍人将棋、D−ルパンがそれなんだが あの程度のモノでもけっこう苦戦した
しかしまあ チャレンジ精神が大切だ 応援してるおがんがれ!

61柳葉魚:2010/01/14(木) 16:49:55 ID:FQS8hgCY
有り難う御座います!
日々精進する様努力します。

また何かありましたらご連絡いたします。

62名無しさん:2010/01/30(土) 03:47:25 ID:cxReYYT2
エロフラはノウハウサイトも無いので勉強になります
ほむ

63:2010/03/03(水) 20:06:30 ID:NSBy2QDI
大王さん、こんばんは。実は報告がありまして…
なんと以前に教えていただいたマウスの8方向検出にようやく成功しました!
かなり長い月日がかかってしまいましたが
本当に大王さんのおかげです。有難う御座いました・゚・(つД`)・゚・

実験の時にはちゃんとした絵ではなく
円のMCを用意して、その中に各方向へ伸びた状態を一つずつ描き
上にマウスドラッグをすると上に伸び、左なら左に、右なら右に…
というだけの物だったのですが、一度できてしまえば
次からは同じスクリプトを利用して様々なFlashが作れますよね。
これで少し頑張れる自信が湧きました。深く感謝致しますm(_ _)m

64名無しさん:2010/03/06(土) 19:50:38 ID:cBGLMJdI
>>63
スゲー&裏山ー。

65エロエロ大王 ◆/ERoERooY6:2010/03/13(土) 01:37:42 ID:MXp3cjR.
おお! 昴だったのか お久し〜〜

何か出来たら見せてくれ〜い

66:2010/03/13(土) 10:38:25 ID:T4F8r0H.
>>64
いやはや、有難う御座います!

>大王さん
はい。まだまだ未熟者ですが、作品が出来たらその時はまた宜しくお願い致します。
絵も以前よりは少し、マシになったはずですので…多分…(^^;)

67柳葉魚:2011/11/18(金) 21:43:29 ID:AwV52n52
大王様、ご無沙汰しております。
また力をお借りして頂きたく参りました。

今回は、「マウスでクリックした座標まで徐々に移動→停止」させたいのです。
即行移動は出来るんですけど、

onClipEvent(mouseDown)
{
this._x = _root._xmouse;
this._y = _root._ymouse;
}

「徐々に」という所で悩んでます;
Windows7 AS3.0 ソフトはfrimo3使ってます。
ご教授お願い致します。

68エロエロ大王 ◆/ERoERooY6:2011/11/19(土) 15:45:11 ID:f3LfD58s
お〜 ずいぶんと久しぶりだなあ その様子だとあまり進歩してねえなw
徐々に移動って事は毎フレーム処理し続けなければならないって事だ
//以下はメインタイムラインに書く
var clickx = 0, clicky = 0;//クリック座標一時記憶用
_root.onEnterFrame=function(){//メイン処理部
if ( aaaMC._x>clickx ){//aaaMCはステージに配置したMC
aaaMC._x -= 3;
}else{
aaaMC._x += 3;
}
if ( aaaMC._y>clicky ){
aaaMC._y -= 3;
}else{
aaaMC._y += 3;
}
}
//以下は動かす対象MCのクリップアクション
onClipEvent(mouseDown){
_root.clickx = _root._xmouse;//クリックポイントを記憶
_root.clicky = _root._ymouse;
}
綺麗に直線的に動かしたいなら三角関数使わないとだめだね

69エロエロ大王 ◆/ERoERooY6:2011/11/19(土) 15:53:33 ID:f3LfD58s
これでもおもろい動きになるお
var clickx = 0, clicky = 0;//クリック座標一時記憶用
var valx = 0, valy = 0;//移動値
_root.onEnterFrame=function(){//メイン処理部
if ( aaaMC._x>clickx ){//aaaMCはステージに配置したMC
aaaMC._x -= valx;
}else{
aaaMC._x += valx;
}
if ( aaaMC._y>clicky ){
aaaMC._y -= valy;
}else{
aaaMC._y += valy;
}
}

onClipEvent(mouseDown){
_root.clickx = _root._xmouse;//クリックポイントを記憶
_root.clicky = _root._ymouse;
_root.valx = Math.abs( _root._xmouse - this._x )/50;//移動値算出
_root.valy = Math.abs( _root._ymouse - this._y )/50;
}

70柳葉魚:2011/11/23(水) 11:36:49 ID:AwV52n52
大王様、こんにちは。
やっと時間が取れたのでやってみたのですけども…

var clickx = 0, clicky = 0;

_root.onEnterFrame=function(){
if(aaaMC._x>clickx){
aaaMC._x -= 3;
}else{
aaaMC._x += 3;
}
if(aaaMC._y>clicky){
aaaMC._y -= 3;
}else{
aaaMC._y += 3;
}
} ←【ライン14】

※エラー:シーン 1, レイヤー1,フレーム1, ライン14: シンタックスエラーが発生しました。
}

…と、大王様のASに文句をつけてきました。
フリモなので、functionの使い方が違うのかな?と、少しいじってみても直りませんでした。

71エロエロ大王 ◆/ERoERooY6:2011/11/23(水) 15:37:23 ID:f3LfD58s
えー… フリモはわからんな〜 そのエラーは単純なやつだ 全角スペースが隠れてたり…
this.onEnterFrame = function(){//_rootをthisに変える

};//中カッコ閉じの後にセミコロンつける

これでもだめならもうわからんっす〜

72柳葉魚:2011/11/24(木) 13:22:42 ID:AwV52n52
エラー指摘されてた、ライン14の }の後にセミコロン付けて解決、動きしました!
ありがとうございます!
2つ目の方が綺麗に動きますけども、1つ目2つ目どちらもクリックしたところまで移動した後に
MCがブレるのはナゼなんでしょう?;

73エロエロ大王 ◆/ERoERooY6:2011/11/24(木) 16:36:12 ID:f3LfD58s
そういう想定外のおもしろい動きになってしまうのもゲームプログラミングの醍醐味のひとつなんだお
プルプルさせたくないならある程度MCとクリック座標が近づいたらメイン部のMC移動処理を
キャンセルさせてやればいいのだ まず最初は自分で考えてコーディングしてみてくれ〜い

ヒント:キャンセルさせる場合はif文使って座標判定

まあ どーしてもダメだったら途中までのコードをコピペしてくれ〜い 丸投げはだめだお

74柳葉魚:2011/11/25(金) 14:07:26 ID:AwV52n52
確かに不思議な動きされると、どうなってこうなってしまうのか好奇心が沸きます!
ヒントありがとうございます!
前のレスに書いていなかったのですが、if文使って止めようとしてました。
やっぱりif文なのですね…ほむ。頑張って止めてみせます!

75柳葉魚:2011/11/28(月) 15:51:46 ID:AwV52n52
大王様、止められませんでした…orz
変なASになってますけど、貼っておきます。

var clickx = 0, clicky = 0;
move_flg = true;

_root.onEnterFrame=function(){
if(aaaMC._x>clickx){
aaaMC._x -= 8;
if(aaaMC._x == clicx){
move_flg = false;
}else{
aaaMC._x += 8;
}
if(aaaMC._y>clicky){
aaaMC._y -= 8;
}else{
aaaMC._y += 8;
if(aaaMC._y == clicy){
move_flg = false;
}
}
}
};

いかがでしょうか…。

76柳葉魚:2011/11/28(月) 15:54:17 ID:AwV52n52
あ。↑のASはステージ自体に記入したものです。
MCのほうは変わっていません。

77エロエロ大王 ◆/ERoERooY6:2011/11/28(月) 16:26:52 ID:f3LfD58s
キャンセル処理とアドバイスしたのがまずかったかw
単純なコードなら数値判定だけで可 フラグ管理は複雑で長いコードの時に有効なのかな
これでも移動中のカクカクは回避できないな 回避したい場合は…考えてみてくれ!
コードにはコメントつけるクセをつけておかないとだめだ パッと見何がなんだかわからん

var clickx = 0, clicky = 0;//クリック位置記憶用
var moveVal = 8;//最小移動値

_root.onEnterFrame=function(){
var diffX = Math.abs( aaaMC._x-clickx );//クリック位置の差X
var diffY = Math.abs( aaaMC._y-clicky );//Y
if ( diffX>=moveVal || diffY>=moveVal ){//最小移動値よりも差が大きいならMC移動処理
if(aaaMC._x>clickx){
aaaMC._x -= moveVal;
}else{
aaaMC._x += moveVal;
}
if(aaaMC._y>clicky){
aaaMC._y -= moveVal;
}else{
aaaMC._y += moveVal;
}
}else{//差が小さいならキャンセル

}
};

78エロエロ大王 ◆/ERoERooY6:2011/11/28(月) 16:36:20 ID:f3LfD58s
>>75
if(aaaMC._x == clicx){
move_flg = false;
だいたいこの clicx てのは何なんだおw move_flgも設定だけして使ってないし…
clicxはただの打ち間違いだろ これでエラーが出ないのがAS1,2のやっかいなとこだよな〜

>>38でも書いたけどハクヒンさんとこで勉強しとくんだ
Math.absなんかも理解してないならヘルプで確認しないとだめ

79エロエロ大王 ◆/ERoERooY6:2011/11/28(月) 16:44:23 ID:f3LfD58s
あと確認なんだけど ソフトにコードをコピペした後インデント開けてる?
インデントってのは行の頭の半角4個分のスペースだ(もしくはTab1個分)
ifやfor使って複雑になった場合インデント空けてないと理解できないお

_root.onEnterFrame=function(){
□□□□var diffX = Math.abs( aaaMC._x-clickx );//クリック位置の差X
□□□□var diffY = Math.abs( aaaMC._y-clicky );//Y
□□□□if ( diffX>=moveVal || diffY>=moveVal ){//最小移動値よりも差が大きいならMC移動処理
□□□□□□□□if(aaaMC._x>clickx){
□□□□□□□□□□□□aaaMC._x -= moveVal;
□□□□□□□□}else{
□□□□□□□□□□□□aaaMC._x += moveVal;
□□□□□□□□}
□□□□□□□□if(aaaMC._y>clicky){
□□□□□□□□□□□□aaaMC._y -= moveVal;
□□□□□□□□}else{
□□□□□□□□□□□□aaaMC._y += moveVal;
□□□□□□□□}
□□□□}else{//差が小さいならキャンセル
□□□□}
};
↑□1こを半角スペースか □4つ分をTabに変換

80柳葉魚:2011/12/07(水) 09:21:40 ID:AwV52n52
おはようございます、大王様。
ハクヒンさんのページを参考しました。
まだ途中なのですけども報告します。
遅くなってすみません;

onClipEvent (load) {
speed = 0; // 速度
rot = 0; // 角度
dx = 0; // x方向移動量
dy = 0; // y方向移動量
}


onClipEvent (enterFrame) {

if(clickx){
speed = 10;
}else{
speed = 0;
} ←このif文がまだわかってない

if(clicky){
speed = 10;
}else{
speed = 0;
}


dx = Math.cos(rot * Math.PI / 180) * speed;//x軸方向移動量
dy = Math.sin(rot * Math.PI / 180) * speed;//y軸方向移動量

_x += dx;
_y += dy;
}


三関数を利用しようとしたら、動かし方がわからなくなりました…
インデントはいつも空けてます^^

81エロエロ大王 ◆/ERoERooY6:2011/12/11(日) 16:33:32 ID:aQ8klm0o
亀レスすまん
そのコードはハクヒンさんとこのを丸々コピーしたのかい? 
フリモの事は詳しくわからないんだけど クリップイベントの方が書きやすい、確認しやすいのかな?
そういうクリップイベント(MCやボタンに直接書くクリップアクション)は一般的に非推奨なんだよな〜

理由は色々あって…
・コードがMCやボタン毎に散ってしまい確認が困難 他の人が見て解読、デバッグが困難
・クリップアクションでenterFrameを使うとメイン処理とのタイミング的なズレが発生してデバッグが困難
・クリップアクションで変数設定するとメイン処理からの参照時にやっかい MCやボタンを消した後に誤作動する
・作品の改造、アップデートが困難

というわけでクリップアクションでは最低限のコードしか書かないほうがいいのだ(せいぜいonイベントくらい)
ボタン側ではボタンを押した、放した、ロールオーバーした、ロールアウトした等の情報を
メイン処理に送る(メイン処理の変数を参照する)だけにした方がコードがわかり易く理解し易く改造し易い

その作品は何をもって完成するかによるんだけど… マウス追従だけならそれでもおk
今後も改造、更新していくのであればloadの変数とenterFrameの処理はメイン処理部に移して
「メイン処理部で監視」型にする必要がある

82柳葉魚:2011/12/15(木) 03:40:01 ID:AwV52n52
ハクヒンさんのを丸写しではないのです。でも改めて見るとそうなっていますね;
直接入力は非推奨なのですか…処理タイミングとか理由が沢山ありますね。
これらも大王様が独自に解読してわかったことなのでしょうか。

今のところマウス追従だけですけども、これから組み増やしていきますので
教えていただいた通りメイン処理型にしておきます。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板