archive-com.com » COM » N » NITOYON.COM

Total: 757

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • PV3Dで画像を繰り返し敷き詰めてテクスチャにする - てっく煮ブログ
    左上に表示中の画像が利用する素材です これを5 5のサイズで立方体の面に貼り付けています キーワードは tiled maxU maxV です package import flash display import flash events Event import flash utils ByteArray import org papervision3d objects primitives import org papervision3d view import org papervision3d materials import org papervision3d materials utils MaterialsList import mx utils Base64Decoder SWF backgroundColor 000000 width 475 height 475 public class PV3DTextureTest extends BasicView 表示する立方体 private var cube Cube 画像を BASE64 エンコードしたもの private static var ImageBase64 String R0lGODlhEAAQAJkAAOdfEwAAAPDQsAAAACH5BAAAAAAALAAAAAAQABAAAAI2hI4XhgYPXxBxxkqhvTJ33i0fuATm4l1TsnEt8GIymZ5uCiviqFG6ictBEDGhCmeCnZKCZbIAADs public function PV3DTextureTest 画像をロードして BitmapData に変換する 変換後 loadComplete 関数が呼ばれる base64ToBitmapData ImageBase64 loadComplete private function loadComplete bmd BitmapData void 表示するテクスチャを右上に表示 addChild new Bitmap bmd BitmapMaterial に BitmapData を渡す var m BitmapMaterial new BitmapMaterial bmd true tiled を true に maxU maxV に敷き詰める数を渡す m tiled true m maxU 5 m maxV 5 Cube の面に貼り付ける cube new Cube new MaterialsList all m scene addChild cube 描画を開始する startRendering protected override function onRenderTick e Event null void cube rotationX 1 cube rotationY 8 super onRenderTick e private function base64ToBitmapData base64 String callback Function void var decoder Base64Decoder new Base64Decoder decoder decode base64 var bytes ByteArray decoder toByteArray bytes position 0 var loader Loader new Loader loader loadBytes bytes var bmd BitmapData new BitmapData 16 16 loader contentLoaderInfo addEventListener complete function event Event void var bmd BitmapData

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/08/06/pv3d-material-texture/ (2016-02-13)
    Open archived version from archive


  • JavaScriptからFlashにフォーカスを与えられるよ - てっく煮ブログ
    で 今回問題となるのが2つ目 1つ目のフォーカスは Flash にあたっていても 2つ目のFlash 的なフォーカスが適切なところにないとフォーカスを持ってないように見えちゃう 結果 Application focusIn イベントも呼ばれない Flash 的なフォーカスを設定するには setFocus を呼んであげよう 以下 修正版の MXML 初期化完了時に 2 の Flash 的フォーカスを得るように改造した mx Application xmlns mx http www adobe com 2006 mxml focusIn bg true focusOut bg false applicationComplete init backgroundColor 0xCCCCCC backgroundImage none mx Script CDATA private function init void myInput setFocus ココ重要 private function bg focus Boolean void this setStyle backgroundColor focus 0x333333 0xCCCCCC mx Script mx

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/06/20/js-flash-focus/ (2016-02-13)
    Open archived version from archive

  • Box2d で多角形を扱うときの注意点 - てっく煮ブログ
    時計回りに座標をしないとダメ 反時計周りにすると 落ちてこなかったりする はまりポイント2 凸包にせよ へっこんだ部分やクロスする部分があるとダメ おかしな動きをする五角形 Box2DでActionScript物理プログラミング 第4回 いろいろな形の物体を作る gihyo jp 技術評論社 どうしてもへっこんだ多角形を作りたい場合には 複数の凸包を組み合わせて作るしかない はまりポイント3 頂点数は8個まで 多角形の頂点数は最大 8 個に制限されている 2 0 2 の場合 バージョンによって異なるかもしれない 8個以上の頂点を作りたいときの対策は2つ 好きなほうを選ぶとよいだろう Box2D Common b2Setting の b2 maxPolygonVertices で定義されている最大頂点数を変更する 複数の shape に分解する 2つ目の分解を選ぶときには色々と注意が必要だ 分解した多角形の頂点が特定の頂点に集まるとパフォーマンス上の問題が生じる 図の左側がその例 一番下の頂点に全ての四角形の頂点が集中しているが この頂点が衝突したときの計算量が増えて処理落ちしてしまう 右の例のように頂点を分散させる工夫が必要だ 北海道を落とすとどう跳ねるのか では特定の頂点から開始して 左回り 右回りに多角形に使う頂点を選んでいってる 少し複雑になってるが 上の図の右にある分解を実現している points には x 座標 y 座標が順番に入ってる var x0 Number points shift y0 Number points shift var y1 Number points pop x1 Number points pop 点がある限り続ける while points length 今回の多角形の頂点数を決める 最大 8 var pointsLeft int Math min points length 2 2 8 1つ目と最後の頂点を設定する shapeDef vertices 0 Set x0 SCALE zoom y0 SCALE zoom shapeDef vertices pointsLeft 1 Set x1 SCALE zoom y1 SCALE zoom 残りの点を設定 for var i int 2 i pointsLeft i if i 2 0 偶数版目は時計回りの点を設定する x0 points shift y0 points shift shapeDef vertices i 2 Set x0 SCALE zoom y0 SCALE zoom else 奇数版目は反時計回りの場所にある点を設定する y1 points pop x1 points pop shapeDef vertices pointsLeft Math floor i 2 1 Set x1 SCALE zoom y1 SCALE zoom 点の数を設定して shape を追加する shapeDef vertexCount pointsLeft body CreateShape shapeDef ただ このように分解した結果 分解した多角形の隙間を小さな島がすり抜けてしまう現象が発生してしまった 図形のサイズが一定ではない場合には b2 maxPolygonVertices を変更する方法を選択すべきだったのかもしれない はまりポイント4 多角形の中心を取得してる b2DebugDraw を使っていると気づきにくいのだけど 物体の位置は物体の重心で表現される そのため 多角形を表示する Sprite は Sprite の 0 0 を物体の重心に合わせておくべきだ そうしないと 物体がずれて表示されてしまう 重心はあらかじめ計算しておくこともできるが 複数の

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/05/11/box2d-polygon/ (2016-02-13)
    Open archived version from archive

  • DebugDraw を使わない Box2DFlashAS3 のサンプル (2.0.2版) - てっく煮ブログ
    if sprite sprite x b GetWorldCenter x SCALE sprite y b GetWorldCenter y SCALE sprite rotation b GetAngle 180 Math PI 画面外に出たオブジェクトを削除する if sprite y 600 world DestroyBody b removeChild sprite 完成品 クリックすると始まるよ ソースコードは以下に 165行 package import Box2D Dynamics import Box2D Collision import Box2D Collision Shapes import Box2D Common Math import flash events Event import flash display import flash text TextField SWF backgroundColor ccddff public class Box2dSimpleSample202MyDraw extends Sprite private const SCALE Number 10 private var world b2World Embed source icon png private var Icon Class コンストラクタ public function Box2dSimpleSample202MyDraw stage scaleMode noScale stage align TL メッセージとクリック時の処理 var tf TextField new TextField tf text Click to start addChild tf var animation Boolean false stage addEventListener click function event Event void count 0 animation animation tf text Click to animation stop start 初期化 init createObject 毎フレームの処理 var count int 0 addEventListener enterFrame function event Event void world Step 1 9 10 if count 0 animation createObject count count 1 30 下に行ったオブジェクトを削除する for var b b2Body world GetBodyList b b b GetNext var sprite Sprite b GetUserData as Sprite if sprite sprite x b GetWorldCenter x SCALE sprite y b GetWorldCenter y SCALE sprite rotation b GetAngle 180 Math PI if sprite y 600 world DestroyBody b removeChild sprite 初期化 private function init void 世界を作成する シミュレーションする座標の範囲を指定する var worldAABB b2AABB new b2AABB worldAABB lowerBound Set 100 0 100 0 worldAABB upperBound Set 100 0 100 0 重力を定義する var gravity b2Vec2 new b2Vec2 0 0 10 0 世界のインスタンスを作成する world new b2World worldAABB gravity true 床を作る 物体の定義を作る var wallBdDef b2BodyDef new b2BodyDef wallBdDef position Set 400 2 SCALE 300 SCALE wallBdDef angle Math PI 24 物体を作る var wallBd b2Body world CreateBody wallBdDef 形の定義を作る var wallShapeDef b2PolygonDef new b2PolygonDef wallShapeDef SetAsBox 180 SCALE 10 SCALE 形を物体に追加する wallBd CreateShape wallShapeDef 床を直接描画する var floorSprite Sprite new Sprite floorSprite

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/04/30/box2d-no-debug-draw/ (2016-02-13)
    Open archived version from archive

  • Box2DFlashAS3 の単純なサンプルと使い方 (2.0.2版) - てっく煮ブログ
    物体を作る var objBd b2Body world CreateBody objBdDef 形の定義を作る var shapeDef b2PolygonDef new b2PolygonDef shapeDef SetAsBox 30 SCALE 30 SCALE shapeDef density 1 shapeDef restitution 0 4 shapeDef friction 0 1 形を物体に追加する objBd CreateShape shapeDef 定義を変更してもう1個の形を追加する shapeDef SetAsBox 40 SCALE 5 SCALE objBd CreateShape shapeDef 重さ 重心を計算する objBd SetMassFromShapes 先ほどの手順と同じだが 動く物体なので最後に SetMassFromShapes を利用して重さや重心を計算している ShepeDef のプロパティは次の通り density 0 以外に設定すると 固定されない 自由落下する ようになる restitution はね返り具合 friction 摩擦ぐあいを表すパラメータ 0 だとよく滑る 物体にはいくつも形を追加できる ここでは 2個の四角を追加している 4 シミュレーションの開始 enterFrame の中で次の関数を実行する world Step 1 9 10 第一引数 timeStep は1回のステップで進める秒数 第二引数 iterations はシミュレーションの精度 小さいとパフォーマンスがよくなり 大きいと正確になる めり込んだりしない 5 描画 ver 2 から DebugView が導入された 開発の初期の段階では 物体を正しく定義できているか調べるのに便利だ 今回も DebugView を使って描画している 一回 次のように定義するだけで 自動的に描画してくれるようになる ありがたい DebugDraw を有効にする var debugDraw b2DebugDraw new b2DebugDraw debugDraw m sprite this debugDraw m drawScale SCALE debugDraw m fillAlpha 8 debugDraw m lineThickness 1 debugDraw m drawFlags b2DebugDraw e shapeBit world SetDebugDraw debugDraw ソース コメントを細かく書いているので128行あります package import Box2D Dynamics import Box2D Collision import Box2D Collision Shapes import Box2D Common Math import flash events Event import flash display Sprite import flash text TextField SWF backgroundColor 666666 width 350 height 200 public class Box2dSimpleSample202 extends Sprite private const SCALE Number 10 private var world b2World コンストラクタ public function Box2dSimpleSample202 stage scaleMode noScale stage align TL メッセージとクリック時の処理 var tf TextField new TextField tf textColor 0xffffff tf text Click to start addChild tf var animation Boolean false stage addEventListener click function event Event void count 0 animation animation tf text Click to animation stop start 初期化 init createObject 毎フレームの処理 var count int 0 addEventListener enterFrame function event Event void world Step 1 9 10 if count 0 animation createObject count count 1 30 下に行ったオブジェクトを削除する for var b b2Body world GetBodyList b b b GetNext if b GetWorldCenter y SCALE 600 world DestroyBody b 初期化 private function init void 世界を作成する シミュレーションする座標の範囲を指定する var worldAABB b2AABB new b2AABB worldAABB lowerBound Set 100 0 100 0

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/04/28/box2dflashas3-2-0-2/ (2016-02-13)
    Open archived version from archive

  • AS3.0 だけでちょっと素敵なボタンを描くよ - てっく煮ブログ
    public class ButtonTest extends Sprite public function ButtonTest var up Button addChild new Button 30 30 30 21 as Button var down Button addChild new Button 30 30 30 21 as Button down y 40 up addEventListener click function event Event void up y 5 down y 5 down addEventListener click function event Event void up y 5 down y 5 addChild new Button 100 40 20 TEST 32 x 50 import flash display Sprite import flash events Event import flash text TextField import flash geom Matrix import flash filters ColorMatrixFilter import flash filters GlowFilter class Button extends Sprite private static const mono ColorMatrixFilter new ColorMatrixFilter 1 3 1 3 1 3 0 10 1 3 1 3 1 3 0 10 1 3 1 3 1 3 0 10 0 0 0 1 0 private var hover Boolean false public function get hover Boolean return hover public function set hover value Boolean void if hover value hover value filters hover null mono public function Button W Number H Number R Number label String size int 11 var matrix Matrix new Matrix matrix createGradientBox W H Math PI 2 var bg Sprite new Sprite bg graphics beginGradientFill linear 0xDDE9F4 0xD5E4F1 0xBAD2E8 1 1 1 0 120 136 matrix bg graphics drawRoundRect 0 0 W H R R bg graphics endFill bg filters new GlowFilter 0xFFFFBE 5 10 10 2 1 true addChild bg var line Sprite new Sprite line graphics lineStyle 3 0xBAD2E8 line graphics drawRoundRect 0 0 W H R R addChild line filters mono buttonMode true mouseChildren false if label var textField TextField new TextField textField selectable false textField autoSize left textField htmlText font size size color 6B8399 label font toXMLString textField x W textField width 2 textField y H textField height 2 addChild textField addEventListener rollOver buttonRollOver

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/04/23/as3-simple-button/ (2016-02-13)
    Open archived version from archive

  • 北海道を落とすとどう跳ねるのか?の裏側 - てっく煮ブログ
    3 73 c 2 848 1 588 3 957 2 445 4 058 2 672 c 0 102 0 227 0 024 1 008 0 353 1 234 以下略 この記号の羅列が座標を知る鍵です 最初の M122 377 57 787 は 122 377 57 787 まで移動しろということで 次の c が3次ベジェ曲線を 8 04 3 73 まで描け ということです こんな感じで SVG の中身をパースして 図形を描画するところまでできました ベジェ曲線は途中のカーブは無視して始点と終点だけを結んで描画してます それなりに再現できてたので曲線の描画は省略しました ところで 物理エンジン Box2d では図形は出っ張ってないといけません 直線を結んだだけでは凹んだ箇所が出てくるのでシミュレーションできません そこで このプログラムでは図形の 凸包 を求めています 上の図では水色の線が凸包です 凸包は図形の外側を布で覆ったところをイメージすると分かりやすいでしょう 凸包を求めるアルゴリズムは 凸包の計算 PDF が分かりやすかったです 今回は計算時間は重要ではなかったので 一番シンプルで泥臭い方法で求めています そんなこんなで SVG を座標の集合に変換することができました 変換をしているのが EasySvgConvert as で 変換結果が Prefs as です 5 Box2dFlashAS3 で落とす 先ほど作った凸包の形で物体を作成して 物理シミュレーションを開始します シミュレーション結果の位置に応じて 地形を移動回転させています Box2dFlashAS3 の DebugDraw 機能を ON にしてみるとこのような見た目になります 物理エンジンは複雑な地形は考えていなくて 凸包だけを認識しているわけです ちなみに 北海道は本島のみを落としていて そのほかの島々は登場しません それには理由があって 北海道がこのようないびつな形をしているからです もし 小さな島も一緒に落としてしまうと 島との当たり判定が変に見えてしまったことでしょう 6 頂点の数を減らす SVG からそのまま凸包を求めてシミュレーションすると どうしても丸みを帯びた角が地面に接触するときに計算数が増えてしまい コマ落ちしてしまいました また 素の状態だと頂点のデータだけで 150KB 程度の容量を食っていたので データのダイエットが必須でした そこで頂点数を適度に間引くためのツールを Flex で作りました 真ん中がオリジナル 右が間引いたあとです この図は間引きすぎですが 違和感がない程度まで間引くよう調整しました シリアライズして GZIP 圧縮した結果 150KB あったデータを 60KB まで削減でき 描画速度も向上しました ソースコードは LightenPrefs mxml や LightenPrefsImpl as あたりです 7 反発係数や摩擦を調整する ただ落とすだけでも十分面白かったのですが 都道府県ごとに個性を持たせるようにしました 例えば 岩手県は名前も堅そうだし形もごつごつしているのでほとんど跳ねないようにしよう とか 栃木県は丸いからスーパーボールみたいに弾みそうだよね とか 石川県が立ったら面白いに違いない とかそんな感じです 完成したパラメータは こんな感じ になりました package public var PrefBox2d Array name 北海道 zoom 1 0 r 0 71 f 12 name 青森県 zoom 2 5 name 岩手県 zoom 2 0 r 0 25 f 4 name 秋田県 zoom 1 6 r 0 55 f 1 name 宮城県 zoom 2 0 r

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/04/22/hokkaido-uragawa/ (2016-02-13)
    Open archived version from archive

  • Processing のトンネルを AS3 で書いてみた - てっく煮ブログ
    new Bitmap tunnelEffect w tunnelEffect width h tunnelEffect height var ratio Number 32 0 Make the tables twice as big as the screen The center of the buffers is now the position w h for var x int 0 x w 2 x distanceTable x angleTable x for var y int 0 y h 2 y var depth int int ratio textureImg height Math sqrt x w x w y h y h var angle int int 0 5 textureImg width atan2 y h x w Math PI The distance table contains for every pixel of the screen the inverse of the distance to the center of the screen this pixel has distanceTable x y depth The angle table contains the angle of every pixel of the screen where the center of the screen represents the origin angleTable x y angle var tf TextField new TextField tf text Click to start addChild tf var i int 0 stage addEventListener click function event void stage removeEventListener click arguments callee setTimeout function void if i CYCLE Buffering finish Start animating addEventListener enterFrame function event void draw removeChild tf return Create buffered images tf text Buffering int i CYCLE 100 createBmdCache i setTimeout arguments callee 20 0 Create i th buffered image private function createBmdCache i int void var timeDisplacement Number count CYCLE Calculate the shift values out of the time value var shiftX int textureImg width timeDisplacement speed of zoom var shiftY int textureImg height timeDisplacement speed of spin var bmd BitmapData new BitmapData w 2 h 2 for var y int 0 y h 2 y for var x int 0 x w 2 x Make sure that x shiftLookX never goes outside the dimensions of the table var texture x int distanceTable x y shiftX textureImg width var texture y

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/03/27/tunnel-as3/ (2016-02-13)
    Open archived version from archive



  •