Beauty Salon α-BET (alphabet)

space001
Blender3d Collada dae modeling Use Papervision3d on Progression3 and 4 http://a-bet.secret.jp/#/access
more whaison works.
whaison space
space002
http://whaison.jugem.jp/ https://jp.pinterest.com/whaison/ https://www.instagram.com/whaison/ https://whaison.amebaownd.com/
https://suzuri.jp/whaison
http://whaison.blogspot.com/
http://whaison.tumblr.com/ http://qiita.com/users/whaison http://www.behance.net/whaison https://github.com/whaison/ https://bitbucket.org/whaison http://serato.com/user/whaison http://whaison.hatenablog.jp/

typo memo
http://d.hatena.ne.jp/whaison/


dayNote
http://www.myspace.com/whaison http://ameblo.jp/whaison/ http://blog.crooz.jp/whaison/ http://blog.crooz.jp/whaisoncafe/ http://nenpyo.org/whaison

fulldisk
http://full.shin-gen.jp/
http://whaison.client.jp/
http://www.dclog.jp/whaison/
featured forums.
space004
forum.unity3d.com/

forums.unrealengine.com.

Progression Forum.

FlashDevelop Forum.

Papervision3D Forum.

FlexUserGroup Forum.

SparkProjectForum.





Twitter







Mobile
qrcode
Calendar
SunMonTueWedThuFriSat
     12
3456789
10111213141516
17181920212223
24252627282930
<< November 2019 >>
New Entries
Archives
Categories
Recent comment
  • FlashDevelopでフォント埋め込み
    感謝!! (12/24)
  • cocos2d-x-3.0rc0 ,c++ ,cpp でTexturePacker で 吐き出した、plist と png でパラパラアニメーションのコード例
    whaison (04/17)
  • Blender2.67にbvh(web上に2500個以上ころがってる)入れてそのBoneオブジェクトをUnity4.0のmecanimで使う
    whaison (08/19)
  • Apple Dev Center 「Certificates, Identifiers & Profiles」で Adhoc をつくってXCode4.6.1でArchiveしてipaを書き出し
    whaison (04/30)
  • Flash CS6でプロパティーパネルで物理演算のジャンプの高さを設定できるCitrus Engine
    whaison (03/01)
  • 「Flash以外、例えばKinectとか」ON TOKYO (会場:高田馬場4-11-8 Floor 6階 ) 短縮URL http://bit.ly/dI0Bfx
    uka (03/02)
  • App Store Review Guidelines アップル社のアプリ審査基準ガイドライン和訳 Apple が 開発者を悩ませ ユーザーをハッピーにしたいガイドライン。w
    whaison (01/25)
  • Unity3d では ADOBE JAPAN OSAKIで行われたFITC 2010 TOKYOでは、 「iOS用にパブリッシュするためには、フリー版ではなくて、有料版を買ってください。さらに追加のパッケージである、"iOS Package (for Development)"を買ってください」とのことだった。
    whaison (01/25)
  • enjoy Adidas-Futsal-Park
    whaison (01/16)
  • MacBookAir にFlashPlayer入れたらなった。Mac Flash Player 10.1/10.2でUstream などでカメラが認識されないバグそんなときはUstreamProducer!でもなくiPhoneだと直ぐにライブ配信できた
    whaison (01/14)
simple sintax high lighter2.0
space003
SyntaxHighlighter2.0用 の貼り付けコード作成する!
ブログパーツ-BLOG PARTS.
Profile
Links
Recommend
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2009.12.02 Wednesday
ウノウラボ Unoh Labs: FlashでWiiリモコンのイベントを取得する方法まとめ
 http://labs.unoh.net/2007/04/flashwii.html


試し版のブラウザ上のFlashでは、使えると思っていた「XMLSocket」が使えないという不具合を発見しました。製品版で直っていることを願います。 そんなわけで、今日は、Wiiのインターネットチャンネル上で使える、簡単なチャットを作ったりして研究をしてみました。その成果として、Wiiリモコンを操作する方法を紹介します。WiiリモコンのイベントをJavaScriptで取る Wiiリモコンを操作する方法は、既にいくつか研究がなされていまして、下記のサイトが参考になります。 WiiCade api(Flashライブラリ) Using the Wiimote buttons in Flash Wiiまとめ その中で、
var wiimote = new Wiimote();
// イベント
wiimote.handleA = function() {
  alert('Aボタンが押されたよ!');
  return true;
}
// コントローラを登録
wii.addController(wiimote);

WiiリモコンのイベントをFlashで...(失敗)

JavaScriptで簡単にキーイベントを取ることができるので、Flashでも簡単にできるだろうと、いつもの要領で、Keyイベントにイベントを登録して、実行してみるのですが、うまくいきません。

それで、WiiCadeのWiiのFlash用ライブラリを使ってみるものの、うまくいきません。実は、これは、WiiCadeにゲームをアップロードして、WiiCadeの中でないと使えないというものなのです!なんと。(2007年4月現在)

FlashでWiiリモコンのキーイベントを取得する方法を調べてみると、下記の手順でJavaScriptと連携してイベントを取るとうまく行くことが解りました。

  • (1) JavaScriptで onKeyPress(), onKeyDown(), onKeyUp()などのイベントを取る
  • (2) Flashのオブジェクトに設定する
特にポイントとなるのが、JavaScriptで、onKeyPress() を受け取るようにすると、普段は、拡大やブックマークなどに使用される(1)や(2)などの特殊キーを無効にし、ブラウザ側で好きな処理を行うことができました。下記のようなコードで検証しました。

<script type="text/javascript">
function a_press(e) {
  var keyCode = e.which;
  alert("press " + keyCode);
  return false; // ----------- (*1)
}
</script>
<body onKeyPress="return a_press(event)">

ポイントは、(*1)の部分で、ここで false を返さないと、特殊キーを無効にできません。

次に、キーイベントをFlash側に伝える方法ですが、こちらも工夫が必要です。Flash8からは、JavaScriptと相互に通信する ExternalInterface という機能があるのですが、WiiのFlash7では、これが使えません(泣)。

そのため、com.quasimondo.wii.WiiMoteから取得したFlashのコードを見てみると、FlashのStageサイズ変更のイベントを介して、キーイベントを取っています。手順は下記の通りです。

  • (1)1ページに2つのFlashを作る。1つは、ゲーム用のFlash(A)1つは、キーイベントを取得する専用(B)。
  • (2)JavaScriptでキーイベントを取ったら、キーイベント取得用Flash(B)のオブジェクトの「width」と「height」をキーコードの番号やキーの状態に変更する。
  • (3)Stage変更イベントを取ったら、実際のゲーム用のFlashオブジェクトへ、LocalConnectionを使って通知する。

ちょっと複雑ですが、WiiCadeのAPIでもLocalConnectionのコードを見つけましたので、似たような感じで行っているっぽいです。

最後に

WiiでいろいろとFlashを動かして試してみましたが、ちょっと不便な点も分かって来ました。まず、上記のように面倒な手順を踏まないと、キーイベントが取れないこと(マウスは onPress イベントで取れます)。それから、ブラウザ上では、リンクの上にポインタが来ると、ぶるっと震えてクリックできることがわかるのですが、Flashでは、これができません。(裏技で振るわせる方法ないでしょうか?)また、Wiiリモコンのポインタの座標は取れますが、Wiiゲームに必須の傾きや速度のセンサは取得できません。

今後は、これを踏まえて、作る側で工夫して、面白いコンテンツを作っていけたらいいなぁと思います。

※私が現在開発中の、Web開発環境「葵2」でも、Wii上で日本語プログラミングができるようにする予定です。


http://www.bolinfest.com/wii/wii.js
--------------------------------------------------------
/* LICENSE: This code is in the public domain */

/**
 * This is a library to handle keypresses by the Wiimote in the Wii Opera browser.
 * An event handler that can be used in Mozilla Firefox (for testing)
 * is also provided.
 *
 * @author bolinfest@gmail.com (Michael Bolin)
 */

// TODO(bolinfest): Add support for detecting when multiple buttons
// are being held down instead of only when they are clicked

/** wii namespace */
var wii = {};

wii.isWiiOperaBrowser = function() {
  return (navigator.userAgent.toLowerCase().indexOf("nintendo wii") >= 0);
}

// wii keycodes
wii.KEYCODE_MINUS_ = 170;
wii.KEYCODE_PLUS_ = 174;
wii.KEYCODE_1_ = 172;
wii.KEYCODE_2_ = 173;
wii.KEYCODE_B_ = 171;
wii.KEYCODE_UP_ = 175;
wii.KEYCODE_DOWN_ = 176;
wii.KEYCODE_RIGHT_ = 177;
wii.KEYCODE_LEFT_ = 178;

/** @type Array<Controller> */
wii.controllers_ = [];

/**
 * @param {Controller} controller
 * @return true if the controller is added; false otherwise
 */
wii.addController = function(controller) {
  if (!(controller instanceof wii.Controller)) {
    throw new Error("invalid argument passed to wii.addController");
  }
  var controllers = wii.controllers_;
  var alreadyAdded = false;
  for (var i = 0, len = controllers.length; i < len; ++i) {
    if (controllers[i] === controller) {
      alreadyAdded = true;
      break;
    }
  }
  if (!alreadyAdded) {
    controllers.push(controller);
  }
  return !alreadyAdded;
}

/**
 * @param {Controller} controller
 * @return true if the controller is removed; false otherwise
 */
wii.removeController = function(controller) {
  if (!(controller instanceof wii.Controller)) {
    throw new Error("invalid argument passed to wii.addController");
  }
  var controllers = wii.controllers_;
  var removed = false;
  for (var i = 0, len = controllers.length; i < len; ++i) {
    if (controllers[i] === controller) {
      controllers.splice(i, 1);
      removed = true;
      break;
    }
  }
  return removed;
}

/**
 * This should be called by the onload() handler of the page to add the
 * appropriate key and mouse listeners
 */
wii.setupHandlers = function() {
  document.onkeypress = wii.handleKeyPress_;
  document.onclick = wii.handleMouseClick_;
}

wii.handleKeyPress_ = function(e) {
  var keyCode = e.which;
  var controllers = wii.controllers_;
  var returnValue = true;
  for (var i = 0, len = controllers.length; i < len; ++i) {
    var controller = controllers[i];
    if (!controller.handleKeyPress(keyCode)) {
      returnValue = false;
    }
  }
  return returnValue;
}

wii.handleMouseClick_ = function(e) {
  if (e.which != 1) {
    // not the left mouse button
    return;
  }
  var returnValue = true;
  var controllers = wii.controllers_;
  for (var i = 0, len = controllers.length; i < len; ++i) {
    var controller = controllers[i];
    if (!controller.handleMouseClick()) {
      returnValue = false;
    }
  }
  return returnValue;
}

wii.Controller = function() {};
wii.Controller.prototype.handleMouseClick = function() { return true; };
wii.Controller.prototype.handleKeyPress = function(keyCode) { return true; };
wii.Controller.prototype.handleUp = function() { return true; };
wii.Controller.prototype.handleDown = function() { return true; };
wii.Controller.prototype.handleLeft = function() { return true; };
wii.Controller.prototype.handleRight = function() { return true; };
wii.Controller.prototype.handleMinus = function() { return true; };
wii.Controller.prototype.handlePlus = function() { return true; };
wii.Controller.prototype.handle1 = function() { return true; };
wii.Controller.prototype.handle2 = function() { return true; };
wii.Controller.prototype.handleA = function() { return true; };
wii.Controller.prototype.handleB = function() { return true; };

wii.Wiimote = function() {
  wii.Controller.call(null);
};
wii.Wiimote.prototype = new wii.Controller();
wii.Wiimote.prototype.toString = function() {
  return "[Wiimote]";
};
wii.Wiimote.prototype.handleMouseClick = function() {
  return this.handleA();
};
wii.Wiimote.prototype.handleKeyPress = function(keyCode) {
  switch (keyCode) {
    case wii.KEYCODE_UP_:
      this.handleUp();
      break;
    case wii.KEYCODE_DOWN_:
      this.handleDown();
      break;
    case wii.KEYCODE_LEFT_:
      this.handleLeft();
      break;
    case wii.KEYCODE_RIGHT_:
      this.handleRight();
      break;
    case wii.KEYCODE_MINUS_:
      this.handleMinus();
      break;
    case wii.KEYCODE_PLUS_:
      this.handlePlus();
      break;
    case wii.KEYCODE_1_:
      this.handle1();
      break;
    case wii.KEYCODE_2_:
      this.handle2();
      break;
    case wii.KEYCODE_B_:
      this.handleB();
      break;
    default:
      return true;
  }
  return false;
};

wii.HorizontalController = function() {
  wii.Controller.call(null);
};
wii.HorizontalController.prototype = new wii.Controller();
wii.HorizontalController.prototype.toString = function() {
  return "[HorizontalController]";
};
wii.HorizontalController.prototype.handleKeyPress = function(keyCode) {
  switch (keyCode) {
    case wii.KEYCODE_UP_:
      this.handleLeft();
      break;
    case wii.KEYCODE_DOWN_:
      this.handleRight();
      break;
    case wii.KEYCODE_LEFT_:
      this.handleDown();
      break;
    case wii.KEYCODE_RIGHT_:
      this.handleUp();
      break;
    case wii.KEYCODE_MINUS_:
      this.handleMinus();
      break;
    case wii.KEYCODE_PLUS_:
      this.handlePlus();
      break;
    case wii.KEYCODE_1_:
      this.handleB();
      break;
    case wii.KEYCODE_2_:
      this.handleA();
      break;
    default:
      return true;
  }
  return false;
};

wii.KeyboardController = function() {
  wii.Controller.call(null);
};
wii.KeyboardController.prototype = new wii.Controller();
wii.KeyboardController.prototype.toString = function() {
  return "[KeyboardController]";
};
wii.KeyboardController.prototype.handleKeyPress = function(keyCode) {
  switch (keyCode) {
    case 105: // I
      this.handleUp();
      break;
    case 107: // K
      this.handleDown();
      break;
    case 106: // J
      this.handleLeft();
      break;
    case 108: // L
      this.handleRight();
      break;
    case 45:  // -
      this.handleMinus();
      break;
    case 43:  // +
      this.handlePlus();
      break;
    case 49:  // 1
      this.handle1();
      break;
    case 50:  // 2
      this.handle2();
      break;
    case 98:  // B 
      this.handleB();
      break;
    case 97:  // A
      this.handleA();
      break;
    default:
      return true;
  }
  return false;
};
------------------------------------------------------- 
| whaison | Gainer | 20:37 | comments(0) | - | pookmark |
Comment




whaisonStudyNoteBook をFaceBookで いいね!





Share |