こんにちわ。あいかわらず確変継続中でサイコロ当たりまくりのbeshinです。
いろいろネタは溜まっているので、ちょっとずつ投下していきます。
僕みたいなへっぽこASerがコード書くと、簡単な処理でもなぜかif文だらけになったり、動くけどすごく複雑になっちゃったり、そういうことって多々あります。
でも案外便利な関数が用意されていて、それらをちょっと応用することで、すごく簡潔に書けることってたくさんあるんですね。
毎回過去のコードを参照してコピペするのが面倒くさくなったので備忘録としてメモっておきます。
■一定の数までカウントがアップすると0に戻る(下の例だと5まで行くと0にもどる)
this._count = (this._count + 1) % 6;
■範囲の限定(0~100まで)
var max:Number = 100;
var min:Number = 0;
this.x = Math.max(min,Math.min(max,this.x));
■配列の値がすべて同じであるかどうか(数値限定)
最大値と最小値を出して比較
最大値
arr.sort(Array.NUMERIC)[arr.length-1];
最小値
arr.sort(Array.NUMERIC)[0];
■配列の複製
var arr:Array = [10, 8, 9, 5, 2, 3, 4, 6, 7];
var arr2:Array = arr.slice();
sliceは配列の一部を切り取って、別の配列として返す。
■テキストフィールドのアルファ
Flashフォントの埋め込みをしないと、テキストにアルファがかからない。と思っていました。
blendMode = BlendMode.LAYER;
TextFieldの親コンテナにBlendMode.LAYERを指定すると、普通にいける。
via:http://wonderfl.net/code/7beb8650734b794c73fde3cc45f96a93acc05fb1
■PV3Dのオブジェクトのピッタリ狙った位置とサイズに2Dのムービークリップを重ねる技術
Camera3D の focus * zoom がちょうどスクリーン座標と 3D 座標が一致する距離。
this._camera.z = this._camera.focus * this._camera.zoom;
■Camera3Dの簡単設定
対象のtoransformコピーして、rotationしてmovieBackfoword!
var target:DisplayObject3D;
var distance:Number = 100;
this._camera.transform.copy(target.transform);
this._camera.moveBackward(distance);
そういえば娘が生まれました。百絵っていいます
主に笑ったり泣いたりウンチしたり寝たりしています。
package{
public class Momoe extends Beshin{
public function Momoe(){}
public function 泣く(){trace(“あーーーーー”)}
public function 笑う(){trace(“あうあうあう”)}
private function ウンチ(){trace(“ぶりぶりぶり”)}
private function 寝る(){trace(“ZZZ・・・”)}
}
}
こんにちわ。涼しくなってきたので全力で自転車をこぐbeshinです。
最近、夕方になるともっぱら公園でのんびりしてます。でも蚊がたくさんいるので
かゆいです。
というわけで、今回はドット絵を描いてみようと思います。
yoshiwebさんのこの記事 を読んで、これならプログラムでドット絵書けるんじゃね?と思ったのでやってみました。
ドット絵といえば、マリオですよね。クリックすると、表示面が入れ替わります。
各ドット絵は配列で管理してます。
例えばマリオならこんな感じですね。各数字が色と関連付けされてます。
var arr:Array = [
[0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0],
[0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0],
[0,0,0,0,2,2,2,3,3,2,3,0,0,0,0,0],
[0,0,0,2,3,2,3,3,3,2,3,3,3,0,0,0],
[0,0,0,2,3,2,2,3,3,3,2,3,3,3,0,0],
[0,0,0,2,2,3,3,3,3,2,2,2,2,0,0,0],
[0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0],
[0,0,0,0,2,2,1,2,2,2,0,0,0,0,0,0],
[0,0,0,2,2,2,1,2,2,1,2,2,2,0,0,0],
[0,0,2,2,2,2,1,1,1,1,2,2,2,2,0,0],
[0,0,3,3,2,1,3,1,1,3,1,2,3,3,0,0],
[0,0,3,3,3,1,1,1,1,1,1,3,3,3,0,0],
[0,0,3,3,1,1,1,1,1,1,1,1,3,3,0,0],
[0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0],
[0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0],
[0,0,2,2,2,2,0,0,0,0,2,2,2,2,0,0]
]
今回アニメーションにBetweenAS3を使ってみようと思ったのですが、連打したときの挙動が怪しかったので、いつものようにTweenMaxでトゥィーンしています。
とおもったら、こんな記事 が。
これでいけるようになるのかな・・・?
ソースは、papervision3dでCubeにする際の処理がすげえ力技なので、
もうちょい修正してわんだふるにあげるかもしれないです。
追記:10/08wonderflにあげました。
わたし、何かが分かった気がしたんです。
ある日の、ラーメン屋での出来事。
今日はクタクタで家に帰ってもメシを作る気がしない。
そんなときは家の近くのラーメン屋で夕飯を済ますのですが、
ラーメンをすすっている時に「はっ」と気が付いてしまったんです。
「も、もしやこのラーメンに入ってる刻みネギは、ネギを拡張したものではないか!」
「も、もしやこのラーメンに入ってる麺は、小麦粉を拡張したものではないか!」
「も、もしやこのラーメンに入ってるチャーシューは、豚肉を拡張したものではないか!」
とね。。
職業柄プログラムを触らせて頂く機会が増える一方で、
自分の作るロジックにため息しか出ない日々が続いておりました。
「なぜ、俺の作るプログラムはこうもイケてないんだ!」
プログラムの世界にはオブジェクト指向というものがありまして、
自分なりに参考書を読んで勉強してきていたのですが、
なかなか身になっている気がしませんでした。
そんな折、ラーメン屋での出来事があり、
もう少し理解を深めたいと思い今回の記事を書こうと自主的に申し出た所存でございます。
———————————————————————————-
さて、今回のお題は「ラーメンとオブジェクト指向」でございます。
例として、ユーザーさんがボタンを押すとラーメンが出てくる、
というインスタントラーメン屋を想定してプログラムを組んでいきます。
■制作環境
・Windows XP
・FlashDevelop
・flex_sdk_4.0.0.4904
■構成
ラーメンの構成は簡略化して考えていきたいと思います。
細かいことは気にしない。
この三つで今回のオブジェクトラーメンは出来ております。
だがしかし、麺は小麦粉を原材料として作られ、
チャーシューは豚肉からできる。
プログラム的に言うと、
麺は小麦粉を拡張し、チャーシューは豚肉を拡張している。
さらに刻みネギは、ネギを拡張しているというふうに言えると思います。
という考えのもと、以下のファイル構成にしております。
すべての元になるクラスたちが「shokuzai」フォルダー。
その食材から作られる具や麺たちは「proccessed」フォルダーへ。
さらに、それらを組み合わせて作られるラメーンを「menu」フォルダーへ構成しました。
それらに簡単なアニメーションをつけたのがこちら!
かなり不完全ではありますがソースも置いておきます。
よろしかったら使ってみてください。
■ラーメン ダウンロード
ramen
ようやくサイコロに当たりました。
はじめまして。beshinです。
早速ですが、僕の携帯は二世代ほど前のものです。メールや、簡単なインターネットとかはできるのですが、最近では当たり前のようになっている、ワンセグとかは当たり前のように見ることができません。
普段はまったく気にならないのですが、つい先日、行われたWBCのときとか、隣のdarmanとかが得意げにワンセグ観戦しているのを目の当たりにすると、悔しいというか、寂しいというか・・・
つまり僕だって得意げに携帯で動画を見たいわけです。
というわけで、記念すべき第一回目の投稿は、AR(拡張現実) を使って、僕の携帯で動画再生を試みました。僕はFlashしかできないので、AID-DCCのSaqoosha さんがFLASH用に移植してくれた、最近話題のFLARToolkitを使わせてもらいます。
用意するものはWebカメラとFLARToolkit用マーカー です。今回は携帯で動画を見たいので、携帯の待ち受け画面にマーカーを表示させました。
デモ
キレの良い動画が再生されますね。(再生されているイケてる動画はココ から拝借しました。問題あれば削除するつもりです。)
具体的な手順は、このページ を参考にしました。
新しい技術に触れるということで、かなり前のめりに作業をはじめたのですが、用意されていたFLARToolKitスタートキットを使うと、PV3Dのコードをちょっと書いただけで、動くみたいです。便利ですね。
protected override function onInit():void {
super.onInit();
var conection:NetConnection = new NetConnection();
conection.connect(null);
var stream:NetStream = new NetStream(conection);
var video:Video = new Video();
video.attachNetStream(stream);
stream.play(‘sample.flv’);
stream.togglePause();
var vsmat:VideoStreamMaterial = new VideoStreamMaterial(video, stream);
this._plane = new Plane(vsmat, 120, 120);
this._plane.z = -100;
this._baseNode.addChild(this._plane);
this.addEventListener(FlarSegEvent.AR_RENDER, function(e:FlarSegEvent):void {
if (e.isVisible) {
stream.resume();
}else {
stream.pause();
}
})
}
外部から表示非表示の判定の部分だけ良く分からなかったので、PV3DARApp.asをちょっと改造してイベントを発行してみたのですが、他にいい方法があるのかな?実はAPIが用意されてそうだけど・・・
これでWebカメラとマーカーさえあれば、携帯でも動画見放題ですね。ようやく隣の席のdarmanを黙らせることができそうです。