CALENDAR
Sun Mon Tue Wed Thu Fri Sat
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>
本家STORY FACTサイト
NEW ENTRIES
CATEGORIES
RECENT COMMENTS
  • GB解析 -NG- 邪聖剣ネクロマンサー イシュメリアの悪夢 やったことあるんだよね・・・
    hikali (05/08)
  • GB解析 -NG- 邪聖剣ネクロマンサー イシュメリアの悪夢 やったことあるんだよね・・・
    マイケル村田 (05/04)
  • GB解析 -NG- ウィザードリィ3 ダイヤモンドの騎士 橋爪さんですね・・・
    hikali (03/29)
  • GB解析 -NG- ウィザードリィ3 ダイヤモンドの騎士 橋爪さんですね・・・
    マイケル村田 (03/25)
  • GB解析 -NG- ルパン三世/暁の第三帝国 良作なエンターテイメント
    hikali (01/09)
  • GB解析 -NG- ルパン三世/暁の第三帝国 良作なエンターテイメント
    マイケル村田 (01/06)
  • GB解析 -NG- 邪聖剣ネクロマンサー イシュメリアの悪夢 やったことあるんだよね・・・
    hikali (11/24)
  • GB解析 -NG- 邪聖剣ネクロマンサー イシュメリアの悪夢 やったことあるんだよね・・・
    マイケル村田 (11/21)
  • GB解析 -NG- 新・鬼ヶ島 暗黒の化身を討て! 成功した理由が良く分かりました。
    hikali (06/27)
  • GB解析 -NG- 新・鬼ヶ島 暗黒の化身を討て! 成功した理由が良く分かりました。
    マイケル村田 (06/24)
RECENT TRACKBACK
ARCHIVES
MOBILE
qrcode
LINKS
PROFILE
OTHERS
無料ブログ作成サービス JUGEM
 
管理人hikaliの開発の日々の備忘録です。
本家はこちら。
http://plaza.rakuten.co.jp/hikali/
[ActionScript3.0]ドラッグして投げることができるボール


 開発中で、絶賛リハビリ中の管理人ですが、以前のActionScript2での開発時も書いたのですが、わたしの中で、勝手にドラッグボールと呼んでいるFLASHのActionScript3版が出来ましたので、紹介しておきます。

 前回の様子↓
 ■[ActionScript2.0]ドラッグして投げることができるボール
 http://blog.story-fact.com/?eid=775440


 実は、この動きはわたしが作っているFLASHゲームブックのUIの中核部分だったりするのですが、まあ、難しい事はいいので、FLASHとコードをさらしておきます。






var dx:Number = 0;
var dy:Number = 0;
var oldx:Number = 0;
var oldy:Number = 0;
var flag:int = 1;

this.addEventListener(MouseEvent.MOUSE_DOWN,MD);
this.addEventListener(MouseEvent.MOUSE_UP,MU);
this.addEventListener(Event.ENTER_FRAME,EF);

function MD(event:MouseEvent):void {
this.startDrag();
oldx = this.x;
oldy = this.y;
flag = 0;
}

function MU(event:MouseEvent):void {
this.stopDrag();
flag = 1;
}

function EF(event:Event):void {
if (flag == 1){
this.x = this.x + dx;
this.y = this.y + dy;
dx = dx * 0.8;
dy = dy * 0.8;
} else {
dx = this.x - oldx;
dy = this.y - oldy;
oldx = this.x;
oldy = this.y;
}
}



 このコードはonClipEventがaddEventListenerとfunctionに置き換わっただけで、ほとんど変わってないですね。数値が若干調整されているのは、FLASH CS4のデフォルトのフレームレートが24だからという、それだけなので、まあ、あんまり関係ないです。


 続いて、ボールの中央部分のY座標が350で止まるようになっているドラッグボール。






var dx:Number = 0;
var dy:Number = 0;
var oldx:Number = 0;
var oldy:Number = 0;
var flag:int = 1;

this.addEventListener(MouseEvent.MOUSE_DOWN,MD);
this.addEventListener(MouseEvent.MOUSE_UP,MU);
this.addEventListener(Event.ENTER_FRAME,EF);

function MD(event:MouseEvent):void {
this.startDrag();
oldx = this.x;
oldy = this.y;
flag = 0;
}

function MU(event:MouseEvent):void {
this.stopDrag();
flag = 1;
}

function EF(event:Event):void {
if (flag == 1){
if (this.y > 300) {
dy = (350 - this.y)/2
} else {
}
this.x = this.x + dx;
this.y = this.y + dy;
dx = dx * 0.8;
dy = dy * 0.8;
} else {
dx = this.x - oldx;
dy = this.y - oldy;
oldx = this.x;
oldy = this.y;
}
}



 あれ、なんかシンプルじゃね? と昔のと比べて思ったかたは、正解というか、昔のわたしがおそろしく頭の悪いコードを書いていたというだけなのですが、なんであんなへんてこなコードを書いていたんですかねえ・・・。

 まあ、よい。
 とりあえず、慣例に従ってエントリーをポストしておきました。

| AS3ゲーム修行 | 15:28 | comments(0) | trackbacks(0) |
randstrのFLASH版を公開しておく。あとで解説する。
 タイトル通り。
 体力がないので、解説のちほど。
 Utf-8以外は受け付けないしようなので、その辺はご理解ください。

 http://story-fact.com/randstr.lzh

 説明はあとで。
| AS3ゲーム修行 | 01:46 | comments(0) | trackbacks(0) |
[AS3ゲーム修行]大晦日なのに、遊んでる・・・。
 なんか、積み木を与えられた子供みたいに遊んでいる。



 まったくもう、大晦日だって言うのに…。
 ほんとガキだねというか、こういうインタラクティブな、じぶんでいろいろいじれるものってなかったので、あれこれいじっているだけでなんか楽しくなってしまう。
 しかし、それだけで十分楽しいので、あちこちいじっては、パラメータ変えて微妙な動きを調整するだけでも楽しくて、そこからまったく進まないというどうしようもないという状況に陥っているなあ…。
 こんなの作ってもなんにもならないのに…。
 ほんとまったく進まない。
 子供が野球を覚えようとして、壁あてから始めたら、ボールをいじっているのが楽しくなってまったく進まないという感じ。
 はあ・・・。
 ただ、まあ、このボールで設定した微妙な動きが、件のゲームブックUIの動きになっていたりするので、まったく無駄というわけではないと思うのだけど。

 ただ、まあ、ActionScript3で、AS2でやっていたことができるようになってきたかなあ。あとは、当たり判定とか、そのあたりか。あー、あとニュートン力学ぐらいはシュミレートできるようにしたい。


 ■コードはこちら。


//■stageのフレームに貼り付けたActionScript
var oldMX:int = 0;
var oldMY:int = 0;
var nowMX:int = 0;
var nowMY:int = 0;

addEventListener(Event.ENTER_FRAME,stageEF);

function stageEF(evt:Event):void {
oldMX = nowMX;
oldMY = nowMY;
nowMX = mouseX;
nowMY = mouseY;
}



//ボールのフレームに貼り付けたActionScript
var enSpeX:Number = 0;
var enSpeY:Number = 0;

addEventListener(MouseEvent.ROLL_OVER,enMRO);
addEventListener(Event.ENTER_FRAME,enEF);

function enMRO(evt:MouseEvent):void {
if (enSpeX == 0 && enSpeY == 0){
enSpeX = MovieClip(this.parent).nowMX - MovieClip(this.parent).oldMX;
enSpeY = MovieClip(this.parent).nowMY - MovieClip(this.parent).oldMY;
}
}

function enEF(evt:Event):void {
x += enSpeX *3;
y += enSpeY *3;
if (x < 30){
x = 30;
enSpeX *= -1;
}
if (x > 380){
x = 380;
enSpeX *= -1;
}
if (y < 30){
y = 30
enSpeY *= -1;
}
if (y > 750){
y = 750
enSpeY *= -1;
}
enSpeX *= 0.97;
enSpeY *= 0.97;
enSpeY += 0.15;
if (enSpeX < 0.05 && enSpeX > -0.05) enSpeX = 0;
if (enSpeY < 0.05 && enSpeY > -0.05) enSpeY = 0;
}
| AS3ゲーム修行 | 13:44 | comments(0) | trackbacks(0) | 昨年の記事
[AS3ゲーム修行]課題山積・・・。
 これについては後述。
 一応直した。




 なんか、FLASH CS4が来て、ああ、こういうの作りたかったんだよねえ、というアプリケーションばかり作っている。
 念願の自分好みの制作ツールとか、ごりごりといじっていると、ほんとに楽しい。
 なんかドリームがぼわーっと広がって、わたしだけの文具品を作っている気分だ。

 (しかし、二時間かかって作ったのが、クラッシュで消えてしまった!!! クラッシュってこの頃ほとんどなかったから、ショックでしばらく脳味噌が硬直してしまった(笑)。FLASH CS4、若干、不安定だよぉ!!!)

 ただ、うーん、Fireworksほどの描画力がないのが、何とも歯がゆい感じ。
 テクスチャーに透明度を掛けて、背景の色彩を乗せたいんだ、ぼけ! というところがFLASHベースではできない。というか、FLASHってシェイプにグラデーションを掛けられないのか。あー、まあ、そんなもんかもと思いつつも、こ、ここに、グラデかけたい、ぐ、グラデ、ぐらで、うう、ぐほ、みたいな状況になっている。
 Fireworksでビットマップ作って、もってこいや、ぼけ、という状況なのだろうが、あんた、こちとら、Vista機ユーザーですよ。Aeroとかをばりばりに効かせている、んなUIに慣れまくっている、生粋のWindows万歳馬鹿野郎どもですよ!
 Vistaは互換性が…とか言っている腐れXP房とは、心意気が違うんですよ!
 Aeroに万歳三唱、PCスペックもVista機所有ユーザに相応しい、エクスペリエンスインデックス5.3ユーザですよ!
 しかもこのスペックでも、いまだに動きがもたつく時があるんですよ!
 うーん、しかし、このスペックは恐ろしいなあ…。
 6点満点で、一番低いのが5.3で、それがプロセッサーとゲーム用グラフィックスだ。
 残りはほとんど最高点。
 ちなみに、フルHDの液晶パネルである。
 金はかけてはいないんだけど、ちょっとスペックが高くて、びびる。

 先日リリースした、FLASHのシューティングもどきが、別のXP機で正常に表示されなくて困った。
 わたしのPCでは極めて正常に動いているのだが、某XP機で見たら、カクカクと駒落ちしているようで、まったく文字を読むことができないのである。たぶん、わたしのPCでは、FLASHの仕様通り毎秒24フレームで描画されている。
 しかし、そのXP機では、そうは行っていないのだ。
 これは、液晶ディスプレイの問題なのか、
 処理速度の問題なのか(つまりCPUとメモリ)、
 グラフィックボードの問題なのか(んー、そんなに難しい処理はしていないんだが・・・)、
 はたまた、OSの問題なのか(VistaのAeroがすさまじく効いているという事は考えられる)、
 これがわからないのである。
 わたしのVista機では極めてスムーズに、印刷物を右から左に移動しているように見えるものが、文字が判別できないほどにかすんで見えてしまうのだ。
 うーん、やっぱり、液晶かなあ…。
 残像でてるもんなあ…。
 わたしの三菱謹製ビューティフル液晶で、残像というものがそもそも存在しないのだが、うーん、困った…。一応、4年型落ちぐらいのVAIOのハイグレードを使っているのだが、それでも性能差が圧倒的というのは、どうした良いのだろう…。
 HPやDellの最新モデルでも、この辺のレベルであるようで、非常に困る。
 ニコニコ動画とかどうしてるんだろう。
 やっぱり、残像でてるんだろうなあ、たぶん…。

 (ニコニコを見ながら研究中)

 あー、うーん、なるほど・・・。
 というわけで直してみた。

| AS3ゲーム修行 | 22:54 | comments(0) | trackbacks(0) | 昨年の記事
 [AS3ゲーム修行]んー…。なにも言わずに、とりあえずリリース
| AS3ゲーム修行 | 15:58 | comments(0) | trackbacks(0) |
 [AS3ゲーム修行]えーと、とりあえずゲームっぽくなった…。
 なんだかごちゃごちゃいじっているうちに、ゲームっぽいものができた。
 こういうのってBASICの時代にベーマガとかによく掲載されていたけれど、あー、こういう気分で作ったのだなあと、思いながらいじってみた。
 思いの他簡単で、ActionScriptも30行も書いてない。
 あー、へー、こうやって書くんだぁみたいな感じ。






 ただ、現在、まだ当たり判定が搭載されていなくて(ちょっとわからない事があって、さんざんに困っていた。詳細は下部注にて)、未完成状態であります。でもこうやっていじっていると、ファミコンゲームぐらいのゲームは簡単に作れちゃうなあと思った次第です。

 ウィザードリーライクなゲームなら、時間が掛かるかも知れないけれど、たぶん作れるなあとか。まあ、それをやって何か意味があるのかと言われると著しく疑問ですが、双葉文庫のゲームブックで散々にファミコンゲームとゲームブックの行き来をして、これって融合できないのかねえと思っていたので、どーなんだろうと思ってしまう。
 そうやって、いろいろアイデアを膨らませるのはいいのだけど、じゃあ、それを君はちゃんと完成させられるのかねと言われれば、やはりあんまり傍流に手を出さずに、本流に近いところに貢献できるところ検討した方が良いのかも知れない。
 ただ、あー、ActionScript3すごい、わかりやすい、こんなにシンプルなのに、こんなにいろいろできるんだ、とその力を知ってしまうと、どうしても妄想が膨らむ。

【下部注】

addChild()で、岩みたいなのを呼んでいるのですが、この岩の落下の処理は岩のシンボルの方でやっているわけです。で、そのとき、stage上にある自機や、スコアを取得しようとしたのだけど、これがどうしてもできない。この辺の連携ってどうやるんだろうとぐちゃぐちゃ調べて結局わからずじまいで、現在に至っているわけです。

どなたかエロいひと教えてくれると嬉しいのですが、なんだかんだ言って自己解決してしまうかも知れません。

ちなみに岩の落下速度を速くする処理はgetTimer()でやっている。

追記:スコアでスピードが変わるように変更されました。
   当たり判定は…。
| AS3ゲーム修行 | 01:52 | comments(0) | trackbacks(0) |