■CALENDAR■
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
<<前月 2012年02月 次月>>
■NEW ENTRIES■
■RECENT COMMENTS■
■CATEGORIES■
■ARCHIVES■
■OTHER CONTENTS■
■LINK■
■Amazon■
■PROFILE■
■POWERED BY■
BLOGN(ぶろぐん)
■OTHER■
■COUNTER■

アイアムアヒーロー

単行本でこれを読んだんですが、最後の11話を読むまではさえない主人公の日常が延々と展開されて、読み進めるのが苦痛に感じるような内容でした。

しかし、最後の11話で本当の話が始まります。
2巻以降は主人公のサバイバルが始まり、(相変わらずさえない主人公ですが)先の展開が気になるないようになっていきます。

週刊誌で連載開始された当初の読者感想などはどうだったんでしょうかね?
下手したら超不人気で、即行連載終了してもおかしくなかったと思うんですが、先の展開を理解していた編集者が、がんばってくれたのでしょうか。

しかし、この作者はヘタレ主人公が好きなんですね。スーパーヒーローなのも現実的ではないですが、あまりにもヘタレすぎるのも見ていてイラッとしてしまいます。

| コミック | 10:28 PM | comments (0) | trackback (0) |
Flashから開いた別画面からデータを受け取るには?
Flashの貼り付けているページ内でFlashに対してJavascriptからデータを渡すことができますが、Flashから別なブラウザの画面を開き、そこからFlashに対してデータを渡したいときにはどうしたらよいのか?

問題はwindow.open()で開いたわけではないので、window.openerではたどれないということです。

ではどうするか?
まず、親となるFlashのページに名前を付けます。
window.name = "main";

子の画面では、その名前でwindow.open()を呼び出しウィンドウオブジェクトを取得します。
後は、通常通りJavascriptからFlashの関数を呼び出してやれば、データを渡すことができます。

sub.html
<html>
<head>
<title>sub</title>
<script language="JavaScript" type="text/javascript">
<!--
function send(str) {
  wObj = window.open("", "main"); // メイン画面のウィンドウズオブジェクトを取得
  if (navigator.appName.indexOf("Microsoft") != -1) { // IE?
    wObj["swf"].pushMessage(str);
  } else {
    wObj.document["swf"].pushMessage(str);
  }
}
// -->
</script>
</head>

<body>

<form>
<input type="button" value="送信" onclick="send('他ウィンドウからのメッセージ')">
</form>

</body>
</html>
"swf"はFlashのobjectタグのidです。

main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  creationComplete="init()">

  <mx:Script>
    <![CDATA[
      import flash.net.navigateToURL;

      private function init():void {
        ExternalInterface.addCallback("pushMessage", pushMessage);
      }

      private function onClick():void {
        var urlReq:URLRequest = new URLRequest("sub.html");
        urlReq.method = URLRequestMethod.POST;
        navigateToURL(urlReq, "_blank");
      }
      
      private function pushMessage(str:String):void {
        message.text = str;
      }
    ]]>
  </mx:Script>

  <mx:Button x="40" y="40" label="開く" click="onClick()"/>
  <mx:Text id="message" x="40" y="80" text="メッセージ" width="500"/>

</mx:Application>


| Flex3 | 07:31 PM | comments (0) | trackback (0) |
人ごみにもまれただけで得るものなし

レゴ ブロックワールドSAPPOROに行ってきました。

お目当ては「テクニックワールド」だったのですが、行ってみたら『8110 ウニモグ U400』を取り上げているぐらいで、しょぼい展示内容でした

気を取り直して販売コーナーに行って見ましたが、ここでもテクニックは一切扱われていなくて、ガッカリして帰ってきました

子供向けイベントとはいえ、もうちょっとテクニックを扱ってくれてもいいのに…。

| 雑記 | 06:03 PM | comments (0) | trackback (0) |
今年も締めくくりはイッセー尾形
毎年、クリスマス時期に札幌で公演するイッセー尾形さんの一人芝居を見てきました。

毎回何かしらの新しい試みをされているのですが、今回は黒子が出てきて芝居のお手伝いをする場面がありました。
ほんの少しだったのですが、それが出すぎにならなくて、ちょうど良い効果を与えていたようでした。

長らく続いていた「天草五郎」は今回が最後になるようですが、私的には悪乗りが過ぎるこの話はあまり好きではなかったので、よろこんでいます。

来年もまた新たな話を引っさげて札幌に来てくれるのを楽しみに待っています。

| 雑記 | 10:15 PM | comments (0) | trackback (0) |
つかむマウスカーソルの設定
プレビュー表示などでマウスカーソルが手の形になり、ドラッグで動かすような画面がありますが、その時のマウスカーソルの変更をFlash Player 10から使えるようになりました。

しかし、手を開いた状態はデフォルトのマウスカーソルで持っているのですが、握った状態のマウスカーソルデータは持っていません。
なので、握った状態のマウスカーソルの画像は自前で用意し、マウスカーソルを設定する必要があります。

画像を用意できたらそれをCursorManagerクラスsetCursor()メソッドで登録します。(CursorManagerクラスのメソッドは静的なのでインスタンスの生成は不要)

ただし、マウスカーソルが開いた手の状態(MouseCursor.HAND)のときに設定してもマウスカーソルが二重に表示されてしまい、握った手が下に表示されて隠れてしまいます。
そこで、マウスカーソルを通常状態(MouseCursor.AUTO)にすると握った手のマウスカーソルだけが表示されるようになります。

握った手のマウスカーソルを元に戻す場合には、CursorManagerクラスremoveCursor()メソッドでカーソルデータを削除します。
そして忘れずに開いた手のマウスカーソル(MouseCursor.HAND)に切り替えます。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

 <mx:Script>
  <![CDATA[
   import mx.managers.CursorManager;
   import mx.managers.CursorManagerPriority;

   [Embed('assets/Goo.png')]
   private var Goo:Class;

   private var _cursorId:int;

   private function mouseOverHandler(event:MouseEvent):void {
    Mouse.cursor = MouseCursor.HAND;
   }
   private function mouseOutHandler(event:MouseEvent):void {
    Mouse.cursor = MouseCursor.AUTO;
   }
   private function mouseDownHandler(event:MouseEvent):void {
    _cursorId = CursorManager.setCursor(Goo, CursorManagerPriority.MEDIUM, -8, -8);
    Mouse.cursor = MouseCursor.AUTO;
   }
   private function mouseUpHandler(event:MouseEvent):void {
    CursorManager.removeCursor(_cursorId);
    Mouse.cursor = MouseCursor.HAND;
   }
  ]]>
 </mx:Script>

 <mx:Canvas height="100%" width="100%"
   mouseOver="mouseOverHandler(event)"
   mouseOut="mouseOutHandler(event)"
   mouseDown="mouseDownHandler(event)"
   mouseUp="mouseUpHandler(event)"
  />

</mx:Application>


| Flex3 | 05:48 PM | comments (0) | trackback (0) |
スクロールバーの表示位置を左と上にする
Canvasのスクロールバーは右と下に表示されますが、それ以外の位置に表示したくても、該当するオプションがありません。
Canvasの親クラスである Containerのソースを見ても、スクロールバーの表示位置を固定で処理しているので、そもそも表示位置を変えたりすることはできないようなので、Canvasのスクロールバーの表示位置を左と上に変更したい場合には、カスタムクラスを作成するしかないようです。

Containerの validateDisplayList()でスクロールバーの表示位置を計算を行っているので、このメソッドをオーバーライドします。

スクロールバーの表示位置は枠線(border)より内側で、水平・垂直のそれぞれのスクロールバーの表示状態により変化します。

枠線の情報は viewMetricsにて取得できるので、メンバーの leftと top分だけ内側に配置します。

水平スクロールバーが表示されているときには、垂直スクロールバーはその分だけ下に配置されるので、ScrollBar.THICKNESS分だけ moveメソッドでずらします。
垂直スクロールバーも同様です。

スクロールバーの表示位置だけをずらしても描画領域はずれないので、contentPaneの表示位置もずらしてやる必要があります。
ここで注意するのは、contentPaneがmx_internal名前空間で定義された変数なので、そのままではアクセスすることができませんから、名前空間の宣言(ソースの赤い行)が必要です。

最後に水平スクロールバー、垂直スクロールの両方が表示状態のときに、角が白い四角になりますが、これは whiteBoxというものなのでこれも左上に表示するようにします。

package com.kasa0.flex
{
import mx.containers.Canvas;
import mx.controls.scrollClasses.ScrollBar;
import mx.core.EdgeMetrics;
import mx.core.mx_internal;
use namespace mx_internal;


public class CustomCanvas extends Canvas
{
 public function CustomCanvas()
 {
  super();
 }

 override public function validateDisplayList():void {
  super.validateDisplayList();

  var vm:EdgeMetrics = viewMetrics;
  if (verticalScrollBar != null ) {
   var h:Number = vm.top;
   if (horizontalScrollBar != null ) {
    h += ScrollBar.THICKNESS;
   }
   verticalScrollBar.move(vm.left, h);
   contentPane.x = h;
  }
  if (horizontalScrollBar != null ) {
   var w:Number = vm.left;
   if (verticalScrollBar != null ) {
    w += ScrollBar.THICKNESS;
   }
   horizontalScrollBar.move(w, vm.top);
   contentPane.y = w;
  }

  if (whiteBox != null ) {
   whiteBox.x = verticalScrollBar.x;
   whiteBox.y = horizontalScrollBar.y;
  }
 }
}
}


| Flex3 | 12:04 PM | comments (0) | trackback (0) |
必要でありながら、よけいなもの
日本の水道水は殺菌のために塩素が入っています。

安全のために入っているものですが、そのために肌荒れや髪を傷める原因になったりします。

水道水にDPD試薬を入れると塩素に反応にして、水がピンク色になります。

ところがこれにビタミンCを加えるとあら不思議、水が透明になります。

これはビタミンCと次亜塩酸ナトリウムが反応して酸化ビタミンCと水と塩化ナトリウムに変化したためです。

安全な水を飲むためには、殺菌は無くてはならないものですが、塩素以外にも殺菌方法はあるのだから、もっと良い方法に換わらないものですかね。

| 雑記 | 09:25 PM | comments (0) | trackback (0) |
おちゃらけていてもシリアスになれます
探偵はBARにいる』を見てきました。

札幌在住者なら「ここはあそこかな?」などと思いをめぐらせながら見る楽しみがあり、他の邦画よりも楽しめる要素があります。
また、大泉洋さんの主演映画ということで、その出世ぶりを十二分に堪能できました。

大泉洋さんというと『水曜どうでしょう』で大ブレークしたひとなので、ついついおちゃらけたイメージが強くあり、映画の前半部もそんな感じだったのですが、話が進むにつれて話もシリアスになり、演技もシリアスなものへと変わっていくのですが、浮いたような感じが無くてよかったです

この映画は、TVドラマ『相棒』のプロデューサーと監督が製作しているので、探偵の相棒として「高田」(松田龍平さん)がいるんですが、『相棒』とは全然違う凸凹コンビなのが面白いですね。

シリーズ化するようですから、『釣りバカ日誌』みたいな息の長い作品になって欲しいです

| 映画 | 05:53 PM | comments (0) | trackback (0) |

PAGE TOP ↑