miniapp
もんたメソッドを使ったiPhone英語勉強をナメているすべての人たちへ
- 2010-02-28 (日)
- 日記
タイトルはホッテントリメーカーつかってみました。おもしろい!
英語の勉強用に、iPhone用の勉強ページを作りました
黒い部分をタップすると答えが見られるようになっています。左下のresetボタンで元に戻ります。
これは、少し前に話題になった(?)『もんたメソッド』を使っています。
レイアウトがギュウギュウですが、あんまりスクロールしなくてもいいようにしたかったので。
iphoneだとcssでposition:fixedが出来ないんですかね? 問題の例文はスクロールしてもずっと表示させたかったんですが。
まだまだ途中で、10問目までしかありません。
作った経緯
以前、急がばまわれ式・堅実で一番効率的な英語の勉強法という記事を読んだ時に、お薦めされていた下記の本を買いました。
| 英語リーディング教本―基本からわかる | |
![]() |
おすすめ平均 ![]() 素晴らしい! 頭が混乱する本 素晴らしい 徹底的に文法という標識に従って読む、自分の想像で読んではいけない 薬袋三部作 応用編
by G-Tools |
かなり大雑把に説明に説明しますが、この本の最初に載っている『本書の効果的な勉強方法』によれば、まずは『練習用TEXTを何度も繰り返し、全部の答えを「テキストの文言通り寸分違わず、しかもよどみなく言える」ようになるまで自分を鍛えよ』と書いてあります。
寸分違わず、九九の暗算を暗唱するように、間髪を入れずに答えられるようになるべし、と。
そして『練習用TEXTを丸暗記するだけでも、相当のところまで所見の英文の構造が分かるようになる』とまで書いてあります。そこまで練習用TEXTを暗記する事は重要な事のようです。そこで、今回の暗記用のページを作ってみました。
一日一ページは増やして行きたいところ。全文で38問。
- Comments: 0
- Trackbacks: 0
マウスで操作出来るスリットスキャン
- 2010-01-15 (金)
- flash
スリットスキャンに、
マウスのインタラクションを付けるとどうなるかな、と思い、作ってみました。
最初は意識していなかったんだけど、以前教えてもらったこちらに似てしまった。
BitmapData::drawで毎フレーム動画をキャプチャし、配列に保存しています。
今回は過去400枚を保存しています。かなり多いと思うんですが、いけるもんですねぇ。
映像を縦1pxづつに区切って管理し、それぞれに何フレーム早めるか、遅らせるかを管理しています。
デフォルトでは保存したキャプチャの真ん中を表示。(今回は400枚保存してるから、200枚目を表示。)
BetweenAs3のイージングを変えるとまた違った感じになります。
ちょっとハマったのが、NetStreamインスタンスをローカル変数にすると、drawする時に下のセキュリティエラーが出る事。
SecurityError: Error #2123: セキュリティサンドボックス侵害 : BitmapData.draw: file:///hoge.swf は unknown URL にアクセスできません。ポリシーファイルへのアクセスも許可されていません。
drawする時にNetStreamインスタンスを参照して何かチェックしてるんですかね?
すぐにエラーが出ずに、しばらくすると出るのも謎でした。
一番良かったのは、絶好の映像ネタが見つかった事w
背景が固定で人が動く映像が見つかって良かった。
背景まで動いているとグチャグチャになりすぎてしまい、良く分からない映像になってしまいます。
ムーンウォークしてる人は、もちろん僕じゃないですよ!w
- Comments: 0
- Trackbacks (Close): 0
Fluid
- 2009-10-22 (木)
- flash
前回asに書き直しただけのFluid \ Learning \ Processing 1.0のソースを解体して整理。クラス構造も大幅に変えてます。
それから、オリジナルはマス目に色を塗って動きを出していますが、パーティクルを表示して動かす形に変更しました。
オリジナルは作製途中なのかな、って感じがしました。。
気泡っぽい感じが出た。
- Comments: 0
- Trackbacks (Close): 0
Processingの流体サンプルをasに
- 2009-10-09 (金)
- flash
[Flash]流体っぽいのを作ろうと思った | blog ViolentCoding
を見てずっと気になっていたんですが、同記事で紹介されている
Fluid \ Learning \ Processing 1.0
をそのままas3に持ってきてみました。
変数宣言が微妙に違うぐらいで、そこを直せば割とあっさり動きました。
最適化してないせいもあるけど、やっぱFlashは重いですね。
変数名なんかはそのままです。
スパイス的な謎の定数が結構あって完全に読み解くのは大変そう。
しかし紹介して下さったe_s_jpさんが作ってるDisplacementMapFilterのバージョンですが、
よくあそこまで膨らませたなぁ、と思います。
凄いす。
僕も、processing.orgから持ってきたコードを、もうちょっと分かりやすく分解して理解してみようと思います。
変数名なんかを自分用に置き換えただけなのはコレ。
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.display.StageQuality;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
[SWF(backgroundColor="0x0", width="465", height="465", frameRate="60")]
public class Main2 extends Sprite {
public function Main2():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private var pmouseX:Number;
private var pmouseY:Number;
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.quality = StageQuality.MEDIUM;
addChild(new Bitmap(canvas));
numCols = width / resolution;
numRows = height / resolution;
vsquaresVectors = new Vector.>(numRows + 1);
vbuffersVectors = new Vector.>(numRows + 1);
for (var i:int = 0; i < numParticles; i++) {
particles[i] = new Particle(Math.random() * width, Math.random() * height);
}
for (var col:int = 0; col <= numCols; col++) {
vsquaresVectors[col] = new Vector.(numCols + 1);
vbuffersVectors[col] = new Vector.(numCols + 1);
for (var row:int = 0; row <= numRows; row++) {
vsquaresVectors[col][row] = new Vsquare(col * resolution, row * resolution);
vbuffersVectors[col][row] = new Vbuffer(col * resolution, row * resolution);
}
vsquaresVectors[col].fixed = true;//付け足し
vbuffersVectors[col].fixed = true;//付け足し
}
vsquaresVectors.fixed = true;//付け足し
vbuffersVectors.fixed = true;//付け足し
addEventListener(Event.ENTER_FRAME, draw);
}
private function draw(e:Event):void {
mouseX = this.mouseX;
mouseY = this.mouseY;
var axvel:int = mouseX - pmouseX;
var ayvel:int = mouseY - pmouseY;
mouseXvel = (axvel != mouseXvel) ? axvel : 0;
mouseYvel = (ayvel != mouseYvel) ? ayvel : 0;
for (var col:int = 0; col < numCols; col++) {
for (var row:int = 0; row < numRows; row++) {
vbuffersVectors[col][row].updatebuf(col, row);
//何にも無い色の設定
vsquaresVectors[col][row].color = 32;
}
}
for each(var p:Particle in particles) {
p.updatepos();
}
canvas.lock();//付け足し
for (col = 0; col < numCols; col++) {
for (row = 0; row < numRows; row++) {
vsquaresVectors[col][row].addbuffer(col, row);
vsquaresVectors[col][row].updatevels(axvel, ayvel);
vsquaresVectors[col][row].display(col, row);
}
}
canvas.unlock();//付け足し
pmouseX = mouseX;
pmouseY = mouseY;
}
private function mouseDownHandler(e:Event):void {
mousePressed = true;
}
private function mouseUpHandler(e:Event):void {
mousePressed = false;
}
}
}
import flash.display.BitmapData;
var width:int = 200;
var height:int = 200;
var mousePressed:Boolean;
var mouseX:Number = 0;
var mouseY:Number = 0;
var resolution:int = 5;
var penSize:int = 30;
var numCols:int;
var numRows:int;
var numParticles:int = 7000;
var vsquaresVectors:Vector.>;
var vbuffersVectors:Vector.>;
var particles:Vector. = new Vector.(numParticles, true);
var pcount:int = 0;
var mouseXvel:int = 0;
var mouseYvel:int = 0;
var canvas:BitmapData = new BitmapData(width, height, false, 0x0);
class Particle{
public function Particle(xIn:Number, yIn:Number) {
x = xIn;
y = yIn;
}
public var x:Number;
public var y:Number;
public var xvel:Number = 0;
public var yvel:Number = 0;
public var pos:int = 0;
public function updatepos():void {
//var col1:Number;//使われていない
if (x > 0 && x < width && y > 0 && y < height) {
var col:int = int(x / resolution);//自身が属しているvsquareを見つける
var row:int = int(y / resolution);
var vsquare:Vsquare = vsquaresVectors[col][row];
var ax:Number = (x % resolution) / resolution;
var ay:Number = (y % resolution) / resolution;
xvel += (1 - ax) * vsquaresVectors[col][row].xvel * 0.05;
yvel += (1 - ay) * vsquaresVectors[col][row].yvel * 0.05;
xvel += ax * vsquaresVectors[col + 1][row].xvel * 0.05;
yvel += ax * vsquaresVectors[col + 1][row].yvel * 0.05;
xvel += ay * vsquaresVectors[col][row + 1].xvel * 0.05;
yvel += ay * vsquaresVectors[col][row + 1].yvel * 0.05;
//自身がいるマスの色を濃くする
vsquare.color += 4;
x += xvel;
y += yvel;
}
else {
x = Math.random() * width;
y = Math.random() * height;
xvel = 0;
yvel = 0;
}
xvel *= 0.5;
yvel *= 0.5;
}
}
class Vbuffer {
public function Vbuffer(xIn:int, yIn:int) {
x = xIn;
y = yIn;
pressureX = 0;
pressureY = 0;
}
public var x:int;
public var y:int;
public var xvel:Number = 0;
public var yvel:Number = 0;
public var pressureX:Number = 0;
public var pressureY:Number = 0;
public var pressure:Number = 0;
public function updatebuf(col:int, row:int):void {
if (col > 0 && col < numCols && row > 0 && row < numRows) {
pressureX = (
vsquaresVectors[col - 1][row - 1].xvel * 0.5
+ vsquaresVectors[col - 1][row].xvel
+ vsquaresVectors[col - 1][row + 1].xvel * 0.5
- vsquaresVectors[col + 1][row - 1].xvel * 0.5
- vsquaresVectors[col + 1][row].xvel
- vsquaresVectors[col + 1][row + 1].xvel * 0.5
);
pressureY = (
vsquaresVectors[col - 1][row - 1].yvel * 0.5
+ vsquaresVectors[col][row - 1].yvel
+ vsquaresVectors[col + 1][row - 1].yvel * 0.5
- vsquaresVectors[col - 1][row + 1].yvel * 0.5
- vsquaresVectors[col][row + 1].yvel
- vsquaresVectors[col + 1][row + 1].yvel * 0.5
);
pressure = (pressureX + pressureY) * 0.25;
}
}
}
import flash.geom.Rectangle;
class Vsquare{
public function Vsquare(xIn:int, yIn:int) {
x = xIn;
y = yIn;
}
public var x:int;
public var y:int;
public var xvel:Number = 0;
public var yvel:Number = 0;
public var color:Number = 0;
public function addbuffer(col:int, row:int):void {
if (col > 0 && col < numCols && row > 0 && row < numRows) {
xvel += (
vbuffersVectors[col - 1][row - 1].pressure * 0.5
+ vbuffersVectors[col - 1][row].pressure
+ vbuffersVectors[col - 1][row + 1].pressure * 0.5
- vbuffersVectors[col + 1][row - 1].pressure * 0.5
- vbuffersVectors[col + 1][row].pressure
- vbuffersVectors[col + 1][row + 1].pressure * 0.5
) * 0.25;
yvel += (
vbuffersVectors[col - 1][row - 1].pressure * 0.5
+ vbuffersVectors[col][row - 1].pressure
+ vbuffersVectors[col + 1][row - 1].pressure * 0.5
- vbuffersVectors[col - 1][row + 1].pressure * 0.5
- vbuffersVectors[col][row + 1].pressure
- vbuffersVectors[col + 1][row + 1].pressure * 0.5
) * 0.25;
}
}
public function updatevels(mvelX:int, mvelY:int):void {
if (mousePressed) {
var dx:Number = x - mouseX;
var dy:Number = y - mouseY;
var dist:Number = Math.sqrt(dy * dy + dx * dx);
if (dist < penSize) {
if (dist < 4) dist = penSize;
var mod:Number = penSize / dist;
xvel += mvelX * mod;
yvel += mvelY * mod;
}
}
xvel *= 0.99;
yvel *= 0.99;
}
public function display(i:int, u:int):void {
var tempColor:uint = 0;
if (color > 255) color = 255;
if (i > 0 && i < numCols - 1 && u > 0 && u < numRows - 1) {
tempColor = (
vsquaresVectors[i][u + 1].color
+ vsquaresVectors[i + 1][u].color
+ vsquaresVectors[i + 1][u + 1].color * 0.5
) * 0.4;
tempColor = int(tempColor + color * 0.5);
}
else {
tempColor = int(color);
}
var rgb:uint = tempColor << 16 | tempColor << 8 | tempColor;
canvas.fillRect(new Rectangle(x, y, resolution, resolution), rgb);
}
}
- Comments: 2
- Trackbacks (Close): 0
うずまきエフェクト DisplacementMapFilterで
- 2009-05-12 (火)
- flash
うずまき。
球もつくりました。けど、これは偶然うまくいってる。
mapBitmap作る部分が間違ってると思う。createDMF関数の中がおかしい。
なので参考にしない方がいいです。すみません。
ひょっとすると渦巻きも…?
- Comments: 0
- Trackbacks (Close): 0
DisplacementMapFilterのメモ
- 2009-05-04 (月)
- flash
間違ってるとこも多いです。ちょこちょこ直していきます。
かなりくどく書きました。だらだらです。helpが意味不明すぎる。
なんでも自由に変形できる万能フィルタではない。誤解してた。そういう変形は今だとpixel Bender使うのかな…?
そうするとDisplacementMapFilterの使い道ってすごく限られてくるのかと疑問に思ってきた。
おおまかな考え方
通常だと、現在地点にどの位の値を加えれば目的地に着くか? で考えるけど、DisplacementMapFilterだと逆。
目的地に引き寄せる力は何か?を考える。 その力を色に変換する。
例えば
現在地 x = 10の地点を、目的地 x = 50に移したいとする。
《通常の考え方》
普通にxに40足す。
《DisplacementMapFilterの考え方》
フィルタによって x = 50に移る点は、x = 10の地点だとしたい。 そうするためにはx = -40の力を生む色を塗る。
色は、目的地に塗る。(この例ではx = 50の地点)
DisplacementMapFilterでの色の決め方
ヘルプには
このフィルタでは次の式を使用します。
dstPixel[x, y] = srcPixel[x + ((componentX(x, y) – 128) * scaleX) / 256, y + ((componentY(x, y) – 128) *scaleY) / 256)
と書いてある。
flashPlayerはこの式を使って変形する、っていう事かな?
どういう事か?
色の強さは0~255の256段階。 このままだとマイナス方向が指定出来ないため、 真ん中の128を中間地点とする。
真ん中からの離れ具合から強さを決める。 そこから128離れるとき、つまり256の時、 50パーセントの力になる(でも色の最大値は255なので僅かな誤差が出る)。
同様に、-128離れるとき、-50%の力になる。(100パーセントではないので注意。)
色の決め方の式
上の考え方から、
移動させる割合 = 移動させる距離 / 最大移動距離
色の強さ = (0x80 * 移動させる割合) + 0x80
このままだと最大値が0x100になってしまい、色の最大値である0xFFを超えてしまう。そのため、中間値を0x7Fとする。127と書いてあるのはこのこと?
色の強さ = (0x80 * 移動させる割合) + 0x7F
※ 0x7Fは10進数だと127、0x80は10進数だと128
例
x方向の移動のみ考える。
現在の座標は(0, 0)で、x方向に100px移動させたいとする。 まず目的地である(100, 0)の地点に色を塗ることにする。 この色を塗った地点に吸い寄せる力の色に青を使うとする。
目的地に引き寄せられるような色を決める
問題は何色にするか。 DisplacementMapFilterを作製する際、scaleX, scaleYという値を決める。
普通、100%の際にmaxの値を取るものだが、 DisplacementMapFilterはmaxが50%という変な設定なので、 scaleX, scaleYには取り得る最大値の2倍を設定。
ここではscaleXの値を100 * 2 = 200とする。
(0,0)から(100、0)に移動させたい。 ここは逆に考えます。 (100,0)の地点に吸い寄せられる地点を(0,0)にしたい、と
そのように設定をするためには、何色で塗ればいいのか?
x方向の距離は、目的地を基準として考えるので、0 – 100 = -100 (目的地から-100すると現在地になるという事)
移動させる距離を、最大値との比率で考える。 すると、-100 / 200 = 0.5
さっきの色の話を見直すと、-50%の力を作る色は、 中間地点の128から-50%の値である0×0。
フィルタを作るときは、大体これをfor文でmapBitmapの全ピクセルに実行する。
各ピクセルで、適用先のピクセルを求めていく。
色を決める式を、ヘルプに書いてある式から求めると
先に挙げた式でも、こちらでもやってることは一緒。
先に出たヘルプの式をxの値だけに絞って整理してみる。
フィルタが適用されるx値 = 移動先のx値 + ((色の強さ - 0x80) * dmf最大値) / 0x100
(dmf最大値はDisplacementMapFilterのscaleX, scaleYの値。変形する際の最大移動距離の2倍にする。)
↓変形
フィルタが適用されるx値 - 移動先のx値 = ((色の強さ - 0x80) * dmf最大値) / 0x100
↓変形(フィルタが適用されるx値 - 移動先のx値 を 移動させる距離 に置き換え。)
移動させる距離 = ((色の強さ - 0x80) * dmf最大値) / 0x100
↓変形
移動させる距離 * 0x100 = (色の強さ - 0x80) * dmf最大値
↓変形
( 移動させる距離 * 0x100 ) / dmf最大値 = 色の強さ - 0x80
↓変形
( 移動させる距離 * 0x100 ) / dmf最大値 + 0x80 = 色の強さ
入れ替えて、
色の強さ = ( 移動させる距離 * 0x100 ) / dmf最大値 + 0x80
このままだと最大値が0x100になってしまい、色の最大値である0xFFを超えてしまう。そのため、中間値を0x7Fとする。
色の強さ = ( 移動させる距離 * 0x100 ) / dmf最大値 + 0x7F
これらを使ったテスト。マウス座標に移す変形をする。
ステージサイズ横100 * 縦100で作ってるので拡大して表示されます。
次回はよくある球へのマッピングをやってみます。
色の決め方の式を追加。
その式つかったwonderflにリンク差し替え。
- Comments: 0
- Trackbacks (Close): 0
ウェブはバカと暇人のもの
![]() |
ウェブはバカと暇人のもの (光文社新書) 中川淳一郎 光文社 2009-04-17 |
タイトルが煽りすぎ、釣りすぎな感じではありますが、
【Web1.374?】「ウェブはバカと暇人のもの」中川淳一郎:マインドマップ的読書感想文
こちらを拝見して面白そうだと思い、僕も読んでみました。
読んで良かったです。かなり面白い。最近読んだ中では一番。
ほんとに身も蓋も無いところがかなりツボ。声出して何回も笑えました。
著者はこんな人。
中川 淳一郎 (ナカガワ ジュンイチロウ)
1973年東京都生まれ。編集者・PRプランナー。一橋大学商学部卒業。博報堂CC局(コーポレートコミュニケーション局)で企業のPR業務を請け負う。2001年に退社し、しばらく無職となったあと雑誌のライターになり、その後「テレビブロス」編集者になる。企業のPR活動、ライター、雑誌編集などをしながら、2006年からインターネット上のニュースサイトの編集者になる。現在は編集・執筆業務の他、ネットでの情報発信に関するコンサルティング業務、プランニング業務も行っている
要約
著者はニュースサイトの編集者をやっている関係で、ネット漬けの日々を送っているが、とにかくネットが気持ち悪い。そこで他人を「死ね」「ゴミ」「クズ」と罵倒しまくる人も気持ち悪いし、「通報しますた」と揚げ足取りばかりする人も気持ち悪いし、アイドルの他愛もないブログが「絶賛キャーキャーコメント」で埋まるのも気持ち悪いし、ミクシィの「今日のランチはカルボナーラ」みたいなどうでもいい書き込みも気持ち悪い。うんざりだ。—本書では、「頭の良い人」ではなく、「普通の人」「バカ」がインターネットをどう利用しているのか?リアルな現実を、現場の視点から描写する。
…
…
…
下記に良くも悪くも気になった部分をメモしておきます。
もしもナンシー関がブログをやっていたら…
彼女は消しゴム版画家であり、テレビに出てくる芸能人を消しゴム版画と辛口コラムでバッサバッサと斬っていた。週刊文春や週刊朝日、噂の真相での連載が大人気(略)
雑誌の読者にとっては、「そうそう、オレもそう思っていた! よくぞ言ってくれた!」といったたぐいのコラムを連発していたのである。
ナンシー関のブログは多分うまくいかない。
ネットでは過激な意見は書けない。
というのも、雑誌は特定の嗜好を持った人を相手にした媒体であり、その嗜好の人々にあったネタを提供することでわざわざお金を払って買ってもらうものだからだ。
一方、無料でみられるテレビは、不特定多数のどんな嗜好を持っているか分からない人をも満足させる、いや、不快に思わせてはいけない必要がある媒体のため、どこで発信する内容はより無害で、より大衆受けしそうなものとなる。
ネットもテレビと同じ。ネットでは過激な意見は書けない。
炎上するだけ。
ネットはもっとも発言に自由度が無い場所
リアル世界によるネットへの介在は、「不当な書き込み」への抑止力を生むが、同時に「正しい書き込み」に対する抑止力をも生むからだ。
「オープンソースプログラムを作る」などといった「頭の良い人」の世界では、Web2.0というものが非常にしっくりきて、すばらしいプログラムの誕生げ役立つだろう。だが、相手が暇つぶしの道具としてインターネットを使っている「普通の人」か「バカ」の場合、双方向性は運営当事者にとっては無駄である。
ネットで流行るのは結局「テレビネタ」
ブログでもテレビネタは人気
テレビを見ることによって、その日どんなキーワードや話題がネットで関心を持たれるかがすぐに分かる
コピペできない雑誌・新聞はネットにさほど影響ナシ
買わなければ見られない、次の号が出れば話題は流れる。
バカの意見は無視してOK
J-CASTニュース : 松本人志が硫化水素自殺で「放言」 「アホが死んだら別に俺はええねん」
上記URLの事件について。
TOKYO FMはサンケイスポーツの取材に対し、「発言の一部を取り上げ、ねじ曲げられて報道されています。局には発言についての抗議は無い」とコメント。
吉本興業も同様。これにより、この騒動はパタリとやんだ。
常にネットの声に怯え、ネットの悪意ある声でさえも「貴重なお客様のご意見」とする趨勢のなか、「バカの意見は無視してOK」「自分が正しいと思う信念があるのであれば、それを貫くことが大事」という前例をつくっただけに、画期的な出来事であったといえよう。
クリックされなきゃ意味がない
ネットではB級企画が受ける
(中略)ネットユーザーが本当にクリックしてくれそうなB級企画をつぶし、おもしろくも何ともない、ただおしゃれで「Loading」の時間だけがやたらと長く、フラッシュ使いまくりで、どこをクリックしていいのかわからないうえに余計な音がでるサイトを作って、ひとりご満悦なのである。
とても責められている気がしました。。これは気をつけないといかんですね。
褒めてるサイトも。
だが大企業や役所でも、ネットユーザーの嗜好に合わせた秀逸な企画はいくつかある。モテモテになる(?)フレグランススプレーの「AXE」(ユニーリーバ)のサイト「THE AXE EFFECT」、「暴君ハバネロ」(東ハト)のサイト「暴君ハバネロ特区」、そして2009年度の佐賀県庁の人材採用ページはなかなかバカらしく、これはおとずれる価値がある。ネットのことをよく分かっている人が作っている。
結局は、リアルの世界で活躍している人が、多額の報酬を得たり、スポットライトを浴びているのである。
…
…
…
本の最後はかなり絶望的な締めで終わり。。そりゃあんまりだ!と正直思いましたw
読み物としてもかなり面白いですし、この業界に働く者としても参考になりましたよ。
追記 2009/05/12
著者の方のインタビューがありました。
『ウェブはバカと暇人のもの』著者に聞く 一般ビジネスパーソンのためのウェブリテラシー(前編):IT&ウェブ業界の転職をサポートする「CAREERzine」(キャリアジン)
- Comments: 0
- Trackbacks (Close): 0
Clothシミュレーションもどき
- 2009-04-05 (日)
- flash
2Dだけど、出来たっぽいです。回転の問題もクリアできました。
何回か布っぽいのを作るシリーズをやってましたが、
今までの物は、ちゃんと点どうしが連結されたものではありませんでした。
今回はちゃんと連結して布のシミュレーションぽい物ができたのでUPします。
しかし、あくまで『それらしい物』であって、z軸も考慮してませんし、怪しい部分が多々あります。
最近Clothシミュレーションよく見ますね。js実装のとか。
2009-02-11 – 最速チュパカブラ研究会
解説も丁寧で凄いなぁ。ソース読んで勉強しよう。
初wonderFlです。
ドラッグで移動、ctrlキー押しながらドラッグで固定。
固定した点をダブルクリックで解除です。
最初に格子状に並べているので布のようですが、
最初に何らかの形に並べれば、その形を維持するように動くはずです。
jointメソッドで隣り合った点どうしを連結します。
ここがどうしても冗長でわかりにくくなってしまってます。
コメントアウトで色々書いておきました。
ずいぶん改善できました。
布 : 改善 | wonderfl build flash online
最初は8方向に対して連結していましたが、上下左右の4方向でOKでした。
ソースも短くなり、ずいぶん分かりやすくなりました。
上の2009-02-11 – 最速チュパカブラ研究会様のソースを参考にしてます。やっぱ凄いです。
一番最初に布っぽい物を作った時も、それぞれを連結するって事は考えたんですが、やり方が思いつかなった。
今回は実直に総当たりな感じで試しにやってみたら上手くいきました。
上手いやり方を考えるのもいいけど、泥臭いやりかたで試すの大事ですね。
Player10から加わったGraphicsPathCommandを使ってラインを描画するバージョンも作ってみました。
wonderflの使い方が良く分かっておらず、forkしないで新しく作ってました。そちら削除させてもらいました。favoriteに入れてくれた方がいらっしゃったのですが、ごめんなさい!
でも少し重くなりますね。今回はこの方法は適してないんでしょうね。
drawLine関数だけ違います。他の部分は全く同じ。
あとはテクスチャですが、テクスチャを貼るのは結構簡単なようです。
AdvancED ActionScript 3.0 Animationに丁寧に書かれてました。
球体のテクスチャ付き3D描画についても書かれてますよ!
それから、回転させるって以前言ったものの、まだ回転させる方法が思い浮かびません。
ためしに思いつきで作ったのですが、上手く動きませんでした。
なにをもって回転とするのかが良くわかってません。
回転の失敗作も近いうちにUPしようと思います。
- Comments: 0
- Trackbacks (Close): 0
AdvancED ActionScript 3.0 Animation
- 2009-01-07 (水)
- flash
名著 ActionScript3.0アニメーションの続編(洋書)。

アマゾンで買っちゃったんですが、
AdvancED ActionScript 3.0 Animation | Book Details
上のリンク先で電子書籍(ebookって書いてある。pdfかな?pdfでした。)としても買えるようですね。
コピペが出来るわけです。ということは分からない単語が出てきても、すぐに辞書ひける。
まるまる1ページ翻訳とかもイケますよね。
…しまった!! 早まったかも!?
上記リンクからは、試し読みが出来るだけでなく、書籍内で使われているサンプルファイルもダウンロードできますね。ふとっぱら!!
(追記)
買ってしまいました。paypalとカードの支払いに対応してました。
1 日本円 = 0.0104302 米ドルで、$27.99 → ¥2,684でした。
形式はpdf。
- Comments: 2
- Trackbacks (Close): 0
マウスで遊ぶ本格ゲーム
- 2009-01-05 (月)
- 日記
4Gamer.net — MMORPG「Puppeteers」の名称が「Tears Saga」に。最新プレイムービーが公開(Tears Saga)
ムービー観ても操作方法が分からなかったのですが、かなり多彩な動きをしていました。
これがマウス操作だけ(?)で遊べるってのは凄い。
5人だけで開発が進められているMMORPG
これも凄いですよね。超エース5人が集まったんでしょうか。
韓国のFlashも凄い印象があるんですけどね。最近チェックしなくなったのですが、どうなっているんでしょう。
前々から、マウスで遊ぶストリートファイター、【daletto】ストリートファイター オンラインも個人的に超注目なんですが、遊んでません。やってみようかな。
マウス操作だけってのがFlashに通じすぎるものがありますよね。
- Comments: 0
- Trackbacks (Close): 0


素晴らしい!
頭が混乱する本