Archive for the ‘Flash’ Category

このページの目次

セミナーに行った時のメモ

金曜日, 7月 10th, 2009

こんにちは、なかわけです。

セミナーに行った時に聞いたメモです。見ないでくださいw。

過去のケータイとPCを連動したコンテンツ
helmets
brainbamber
gyorol
初ぶる

helmets40人くらいでフレームレートが落ちて動かなくなる
制限はかけてない
2択クイズ

ケータイ キーを押すとhttprequest通信する

連動サーバ

FMS(ゲームのロジック)
↓RTMP(real time message protocol)
PC

連動サーバからはケータイを操作できなくて、ケータイを操作したリクエストをもとに携帯にレスポンスを返す

Gyorol for 1 clisk award

ブックマークレット「ページに落書き!β」を作りました

金曜日, 3月 6th, 2009

こんにちは、なかわけです。

仕事で開発していたFlashを作りながら思いついたのでブックマークレットを作りました。

名づけて「ページに落書き!」です。

ブックマークレット「ページに落書き!」

ブックマークレット「ページに落書き!」

使い方は下のコードをブックマークとして追加してください。

ブックマークバーに登録するとクリックしやすくてオススメです。


javascript:(function(){var d=document; var s=d.createElement("script"); s.charset="UTF-8"; s.src="http://nakawake.net/download/flash/ScrawlInPage/load.js?"+(new Date()).getTime(); d.body.appendChild(s)})();

次に落書きしたいページにアクセス後、先ほど追加した「ページに落書き!」ブックマークレットをクリック。

そうするといま表示中のページに落書きすることができます。

オススメの使い方は、ミーティングのときにページに直接描きながら説明したり、人の顔に落書きしてぷぷっと笑ったりしてください。

現在ベータ版ですが今後ちょとずつバージョンアップしていきます。

AS3.0で連想配列を作ろうとしたら

土曜日, 1月 31st, 2009

こんにちは、なかわけです。

ついこの間Flashを編集していて配列を作ろうと思ったらできませんでした。

var myArray:Array = new Array();
myArray['hoge'] = "こんにちは";
myArray['fuga'] = "こんばんは";

できない・・・。

Flashのヘルプを検索しても「連想配列」について1件もヒットしませんでした。

もしかして、連想配列使えなくなった!?
いや待て。そんなわけない!

Googleで検索したところすぐ見つかりました。

AS3.0で連想配列を作るときは、ArrayクラスのオブジェクトではなくObjectクラスのオブジェクトと使うようです。
配列なのに! 

くそぅ、一時間無駄にしました・・・

IEでFlashオブジェクトをHTMLに直接記述すると表示される枠線

火曜日, 8月 5th, 2008

こんにちは、なかわけです。

今日も仕事中に話題になった話。

以前からIEでFlashオブジェクトをHTML内に直接コードを記述すると、そのFlashに枠線が表示されて「アクティブにするにはクリックしてください」というような警告でてました。

制作側ではこれが疎ましく感じている方が多く、FlashオブジェクトのコードをJavascriptで出力するような流れができていたと思います。なかわけやなかわけの仲間たちもそうでした。

しかし、今日なかわけの仲間が見つけた記事によると、その枠線とクリックしたらアクティブという仕様はなくなったそうです。

IEBlog
http://blogs.msdn.com/ie/archive/2008/04/08/ie-automatic-component-activation-now-available.aspx

公式のブログなのでウソではないらしく、実際にIE6でHTML内に直接コードを記述したFlashを表示しても枠線は出ませんでした。

数年前IEの枠線が表示されるようになったときには、少なくともウェブ制作側ではかなり話題になり大きな事件だったと思うですが、枠線がなくなった今はなんで誰もなにも言わないんでしょう。検索してもヒットしません。

なんでだろう。みんな気づいてないだけ?

HTMLに埋め込むとFlashをクリックしてもページが開かない

水曜日, 7月 16th, 2008

こんにちは、なかわけです。

今日知った事実にかなりへこんでおります。
タイトルの通り、HTMLに埋め込むとFlashをクリックしてもページが開かない、のです。
もうちょい詳しく説明します。ムービークリップ(以下、MC)にボタン設定をしました。

MyButton.onRelease = function(){
getURL(“hoge.html”, “_sefl”);
}

ただ、これだけです。プレビューやなかわけが持っているテストサーバでは、MCをクリックするとちゃんとページにジャンプするのにお客さんの環境のサーバではクリックしてもページが切り替わりませんでした。マウスをオーバーするとカーソルは指マークには変わります。

その日1日中悩みましたが、結局わかりませんでした。

次の日、お客さんからメールが届いてました。

Flashプレイヤーのバージョンが9の場合、getURLで_selfが効かないようです

なんだってー!
調べてみたら、Adobeのサポートページに以下のようなドキュメントがありました。

229684 HTML ページに埋め込まれた SWF からのリンクが機能しない場合がある
http://support.adobe.co.jp/faq/faq/qadoc.sv?229684+002

簡単にまとめると、

  • 問題として、Flash Player 9では、getURL(または ActionScript 3.0 での navigateToURL)関数でウィンドウ名に「_self」「_parent」「_top」のいずれかを指定すると、SWF からのリンクが機能しない場合がある
  • 理由として、セキュリティの仕様上、getURL(または navigateToURL)の呼び出しは、同じホスト内の HTML ページのみを対象として作用する。つまり別ホストへのリンクはできない
  • 解決方法といて、別ホストへのリンクをする場合は、ターゲットに「_blank」を指定する

今日も勉強になったなー(つД`)

FLVPlaybackコンポーネントのよくわからないファイルパスの仕様

金曜日, 1月 11th, 2008

こんにちは、なかわけです。

仕事中に発見したFlashのFLVPlaybackコンポーネントのよくわからないファイルパスの仕様についてのメモです。
ほんとに意味わかんなくて数時間苦しんだよ。
なぜ、ソースのflvとスキンのswfのパスを違うように書かないといけないのか謎です。

まず、ファイル構成はこんな感じです。
index.htmlにはmovie.swfを読み込むように記述してあります。

ファイルのディレクトリ

で、なんでか、FlashのFLVPlaybackコンポーネントのパラメータは
以下のように設定するとうまくいきます。

FLVPlaybackコンポーネントのパラメータ

swfやflvはすべてimageフォルダに入れているので、flvのパスは
image/source.flv
になりそうなものなのに、なぜか
source.flv
でうまくいきます。

それで、flvを操作するスキンのswfのパスは
skin.swf
ではなく
image/skin.swf
でうまくいくのです。なぜ!

ほんとに謎です。
なぜこんな仕様なのか。
誰か教えてください。

外部からswfを読み込んで同時にsetMask()でマスクする方法

木曜日, 9月 27th, 2007

こんにちは、なかわけです。

だいぶ前の話になりますが、ちょっと時間があったので(入院中暇だったので)、dsko0 さんからアドバイスいただきましたMovieClipLoaderを使って、外部から読み込んだswf(jpgなどの画像でも)に同時にsetMaskでマスクをかけるFlashを製作してみました。この記事の話です。なかわけ初のサンプル付きです。

まず、サンプルはこんな感じです。

ダウンロードデータはこれです。どうぞ。
moviecliploader.zip

ActionScriptは基本的にヘルプのままですが、サンプルデータにはなかわけの解説が付いています(解説があっているかどうかは保障しませんw)。以下のスクリプトは要点だけまとめただけのものです。

var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
mcLoader.loadClip("neko.jpg", container);
function onLoadInit(mc:MovieClip) {
    mc.setMask(mcMask);
}

とまあこんな感じですが、なんかあったらコメントください。わかる範囲でサポートします。

FLVオブジェクトとSoundオブジェクトの同時操作のバグ

金曜日, 7月 20th, 2007

こんにちは、なかわけです。

今日は、FLVオブジェクトとSoundオブジェクトの同時操作のバグについてです。ちなみに解決してませんw。

簡単に説明すると、音楽と映像を同時に再生するムービーでBGMを止めるとFLVムービーも止まってしまうというバグです。

具体的には、rootレイヤーに下記スクリプトを書いてBGMを流します。

var mySound = new Sound();
mySound .attachSound("BGM");
mySound.start();

そのあとに同じくrootレイヤーに下記スクリプトを書いて、再生ボタンを音楽を止めてムービーを再生します。

my_FLVPlybk.playPauseButton = my_plypausbttn;

//再生されたときの処理
var listenerPlayObject:Object = new Object();
listenerPlayObject.playing = function(eventObject:Object):Void {
    mySound.stop();
}
my_FLVPlybk.addEventListener("playing", listenerPlayObject);

上のEventを日本語にすると、addEventListenerでFLVが再生されたら、mySound.stop();を実行すると書いてあるのに、これをプレビューすると音楽もFLVムービーも一緒に止まってしまいます。

Flashに関しては、以前からSoundObject関連でバグがありましたが、どうやらObject全体でバグがあるようです。
【関連記事】ボリューム0でSound.loadSound()すると100に戻しても音が聴こえない

今回の場合は、EventListenerで処理をせずに、「my_plypausbttnをクリックしたらmySound.stop();してその後にFLVムービーを再生」と記述すればうまくできました。
でも、このバグをかかえてる限り、FLVを再生中に途中から音楽を再生したり停止したりということができません。
たぶん、回避方法はあるようですが研究が必要です。

もし、だれかうまい回避策を知ってる人がいましたら、コメントください。

loadMovie()とsetMask()を同時に使う方法

月曜日, 6月 18th, 2007

こんにちは、なかわけです。

loadMovie()とsetMask()を同時に使う方法については、改めて
外部からswfを読み込んで同時にsetMask()でマスクする方法にまとめてあります!そちらを参考にしてください。



今日も仕事中に発見したことを忘れないうちに覚書。今日の発見はすごいです。
というか今までこの問題に遭遇しなかったのか不思議です。もしくは遭遇していて違う対処法をしていたのでしょうか。
いずれにせよ、今日の発見はなんとなくすごい。

FlashでloadMovie()関数を使うと、外部のswfやjpg画像などを読み込めます。
▼こんな感じ

myClip.loadMovie("画像のパス");

そうするとムービークリップ「myClip」に画像なりswfなりが読み込まれます。
でこのあとにmyClipにマスクをかけます。
▼こんな感じ

myClip.loadMovie("画像のパス");
myClip.setMask(maskClip名);

するとあら不思議。マスクかかりません!

これはいったい・・・・?

ちゃんとした答えはわかりませんが、いろいろ調べてみてなかわけ的には以下のように解釈しました。

[ なかわけの解釈 ]
loadMovie()は関数でsetMask()はメソッド。
loadMovie()関数を実行したあとでは、setMask()メソッドは有効にならない(設定が変更できない)。

はい。現象を確認しただけではなんの解決にもならないので、見つけた解決方法を以下に書いておきます。

[ 解決方法 ]

myClip.loadMovie("画像のパス", setMask(maskClip名);

Flashのヘルプを見ると、loadMovie()のパラメータには画像のパスと、ターゲットと、メソッドというのがあります。通常メソッドにはGETかPOSTが入るようですが、setMask()も同じメソッド扱いとなり受け付けてくれるようです。

なんとなく腑に落ちない感じはしますが、これでいけるようです。あー今日も勉強になった。

Flashの表示スケールをサイズ内に縮小拡大させて納めるかどうかのプロパティ

水曜日, 6月 13th, 2007

こんにちは、なかわけです。

今日仕事で発見したことを覚書き。
例えばFlashを300 x 300のステージサイズで制作してhtmlで200 x 200で表示したいときに、widthとheightをそれぞれ200に設定すればいいのですが、その際にうまく表示させるために<object>タグでは<PARAM NAME=scale VALUE=showall>というプロパティが、<embed>タグではscale=”showall”というプロパティがあります。

パラメータも4種類あります。
showall [すべて表示]縦横比を維持し指定サイズ内にムービー全体を表示
noborder [枠なし]縦横比を維持し指定サイズ内にムービー全体を表示
exactfit [フィット]ムービーの縦横比が変化し指定サイズに収まるように表示
noscale [拡大/縮小なし]Flashムービー内で指定されているサイズで表示 指定サイズがFlashステージサイズより小さい場合は表示が見切る

また、設定を省略すると「showall」を指定したことと同じになります。

今回も設定がnoscaleになってるのに気付かずに1日悩んだぜ!くそ!勉強になった!