2009-01-01から1年間の記事一覧

Bezier曲線の長さ

さんざん既出だろうけど自分でやってみたので書く。変数の定義から。を端点として、をコントロールポイントとする。そして、Bezier曲線を [tex:x(t)=(x_0+(x_c-x_0)t)+*1t] とする。上記に出てくる変数はすべてn次元ベクトルとする。x(t)のでの長さをL(T)と…

一定値だけ旋回

ワンコ関連でちょっと必要だったので。以下に出てくるベクトルの長さはすべて1とする。ベクトルaからベクトルbの向きにθまわしたベクトルcを求めたい。a・b=±1等とくに特殊な場合を考えなくて良い。ただし途中でベクトルを角度に落とさないで求めたい。2次元…

弾幕回避アルゴリズムについて4

これからどういうことをしたいかまとめてみた。 命中アルゴリズム シューティングは回避するだけではなくて命中させなくてはならない。回避とは違う意味で面白そう。 人間らしい動きの追求 上記エントリでは人間らしさをストローク数の少なさ等と定義したが…

弾幕回避アルゴリズムについて3

この後、あんまり深く読まなくても、現在の状況をすべて関数にぶちこむと最適な方向をぱっと示してくれる関数をつくれないかなーと思ってRBFネットワークだの使っていろいろ試していたが、結局うまくいかなかった。関数が複雑になりすぎるわりに使い物になら…

弾幕回避アルゴリズムについて2

次に2次元速度回避に着手した。まさにシューティングで避けている感覚になる。数年前にも同じ題材をやったのだが、そのときは、1フレームごとに次の動きを考える方法で再帰をしていたので、直後6フレーム程度しか読めず、簡単にぼこぼこにされていた。 今回…

弾幕回避アルゴリズムについて1

前に1とかかいたけど忘れてね!僕はゲーム等で弾幕を避けていると、人工知能で弾幕を避けないかなーと思ってしまうような人なので、前々からいつか弾幕回避のアルゴリズムを実践してみたいと思っていた。それで、今回wonderflでいろいろつくったので、それを…

asdocに高速にアクセスする

Flash制作に欠かせない3つの〜 とか行きたかったのですが、うんうん唸っても2つくらいしか出てこなかったのであきらめて、多分どこにも書いてないようなことを書きます。Windows限定かな。ActionScriptを書く人にとってFlex他ライブラリのasdocは絶対に欠か…

Google Code Jam 2009 Round2備忘録

まだ全部解けてないけど、忘れないうちに書いておく。 結論から言うと去年よりひどい負け方でおわた。 まずA問題を見る。最初隣のセルを交換するのかとおもって実装めんどくせーと思って飛ばした。miss++ 次にB問題を見る。smallでも60セルとかメモ化しても2…

kozimaさんの問題

見かけたので解く てか等幅にならねぇ('A`) ■■■ ■ ■ ■ ■■ ■■ ■ ■ ■ ■■■ うまく書けないけどT4つを上下左右にはめあわせれば正方形のできあがり。問題の主旨的には単一でもいいはず。 全部つかえというのなら ■■■ ■ ■ ■■ ■ ■ ■■ ■ ■ ■■ ■ ■ ■■■ をはめ合わせ…

弾幕回避関数1

Wonderflのeditがつながんないので、ぶーたれながらこれを書く。 まだ完成していないのであんまり公開したくはないが、favがすでにたくさんついている状態の、回避関数についてすこし備忘的にいわゆる弾幕を構成する弾は、7割がた等速直線運動をする。等速直…

Google Code Jam 2009 Round1A備忘録

GCJ

GCJ2009のRound1Aをやったので備忘録などなど"UWI"で参加してます。 本当は1B,1Cをやる予定だったのだが、なぜか早起きしたのでせっかくだしやるか、ということで寝ぼけながらやった。特に目標何問というわけでもなく適当にやった。はじめにA問題、コラッツ…

Unionしりとりを作ったときの悩みどころ

ちょっと前のことになるけれど、まる1日ぐらいかけてUnionフレームワークでしりとりをつくってみました。Unionフレームワークというのは、簡単に言うと、非常に機能が限定されたサーバーを介したFlash(クライアント)同士の通信をするためのフレームワークで…

Image(SWFLoader)で読み込みエラーになったときにエラー用の画像を表示したい

ちょっとひっかかったのでメモ。 自分はImageを継承したクラス内で記述しているけど、外からでもできると思う。 まず、HTTP_STATUSイベントを待つ。 image.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHttpStatus);onHttpStatusは次のように書く。 pri…

UITextFieldでの同時押し

UITextFieldで複数のキーを同時押しすると、KEY_DOWNもKEY_UPもCHANGEも1回しか呼ばれないときがある。文字数を調べるルーチンを呼んでいたところでこの問題にひっかかって、正しい文字数が表示できなかった。こういうときは遅延実行がお役立ち。 textfield.…

PopUpされるUIComponentで呼ばれるイベント

ちょっとひっかかったので軽く調べた。同じUIComponentのインスタンスをPopUpManagerから開いたときに呼ばれるイベントは、 1回目 add preinitialize initialize creationComplete 2回目以降 add show で、てっきりcreationCompleteが2回目以降も呼ばれる物…

ASの3項演算子

びびったので載せる。trueとfalse両方評価されるわけじゃないんだ。 true ? trace("AAAA") : trace("BBBB"); false ? trace("CCCC") : trace("DDDD");AAAA DDDD

自分用JSONとXMLの違い

as3corelibのJSON.decodeを使ってJSONをArrayに変換した場合と、素のXMLとの違いを超適当にまとめる。 JSON XML サイズ(TwitterAPIのfriends) 140KB 206KB loader.dataからのデコードの仕方 JSON.decode(loader.data) XML(loader.data) デコードされたデータ…

孫までディープコピー2

また引っかかってしまったので書く。 前のエントリで、Vector.は確かにVector.にコピーされた。だが、Vector.<A> (AはObject以外の任意のクラス)もVector.になるらしい。Arrayでも同様の現象が起こる。(wonderfl)しかも、ディープコピーされたはずの各要素は、A</a>…

ClassFactoryの罠

罠というか、もともとBeanに対して想定されてるものをJavaのリフレクションのように使っちゃおうという魂胆ではじめたことなので諦めるしかないというかなんというか。 ClassFactory.propertiesを使えばインスタンス生成時に値を渡せることがわかったので早…

Ctrl+EnterとAlt+EnterでEvent.CHANGEが呼ばれない

何が原因かわからないのであまり深くは追求しないが、UITextField(TextFieldは未確認)で、Ctrl+EnterまたはAlt+Enterを入力すると、見た目改行が入るのにEvent.CHANGEが呼ばれない。不思議なのは同じ入力を2回以上するとちゃんと呼ばれることだ。 複数行入力…

KEY_DOWNとCHANGEのThreadへの影響

「同一関数内でevent関数を使って同じオブジェクトに対してKeyboardEvent.KEY_DOWNとEvent.CHANGEをlistenすると、KEY_DOWNしか呼ばれない」という、そうめんをやってきた中で一番困る現象がある。 これの解決法は、KEY_DOWNとCHANGEをlistenするThreadを別…

Ctrl+EnterとAlt+EnterでEvent.CHANGEが呼ばれない(解決編)

いろいろ調べた結果、これらは\rを入力しているのだが\rは「なぜか」文字列の足しになってないようだ。 というわけで\nを入力させればよい。KEY_DOWNのハンドラに次のように書く。postareaはTextArea. if (e.keyCode == Keyboard.ENTER && (e.controlKey == …

TextAreaのundoの実装3

残りは、KEY_DOWNにundoしたときの処理を書くだけ。 KEY_DOWN private function onKeyDown(e : KeyboardEvent) : void { prepareHistory(); if (e.ctrlKey && e.keyCode == Keyboard.Z) { var item : Object = history.pop(); if (item) { ta.text = ta.text…

TextAreaのundoの実装2

というわけで実装。これを書いているとだんだん他の方法で書き直したくなってくる、ふしぎ!実装するために検出しなければいけないイベントは KeyboardEvent.KEY_DOWN Event.CHANGE Event.CUT Event.PASTE の4つ。テキスト自体が変わる操作が対象。 例によっ…

TextAreaのundoの実装1

TextAreaにundo機能を実装してみたけれど、結構量ありそうなので分けて書くことにする。というわけで今回は具体的なコードに入る前の準備。TextAreaに限らず、テキストを扱うmxコンポーネントではcut/copy/pasteはあるがなぜかundoはない、という単純な背景…

Window

Windowはなぜかインスタンスの使い回しができない。closeしたら二度とopenできない。よって、開こうとするたびにインスタンスを作らなければならない。(Flexのバグとか書いてあった気もする) もちろん半透明化もできるしドラッグもできる。TestWindow.mxmlに…

PopUpWindow

PopUpWindowはFlashのほうでも使えることもあって、参考資料が多い。PopUpWindowというクラスではなく、PopUpManagerにより追加されるものなので、基本的には何でもアリ。 Windowの子ウィンドウとして働くが、Windowの外側には出られない。(正確には表示さ…

PopUpWindowとWindowの開き方、閉じ方のまとめ

一通りわかったつもりになったので、ここでまとめておく。なお、現状では同一画面に1個までしか存在しないようなものしか必要ないので、その条件で。

Menuについて考える

常時表示しておくわけでもないけど、すぐアクセスしたいものはメニューバーに置かざるを得ないが、かといってそういう項目はそんなにないので、TLifeのWindow上部にメニューを置くのを躊躇ってきた。 で、StatusBarをカスタム化して、右側にメニューバー(Men…

MenuBarのラベルがXMLっぽくなってうまく表示されないよ!

こんな簡単なことでずっと悩んでたので書いとく。labelField設定しろよ!