jQueryで作るFlashみたいにフェードインフェードアウトするバナー

2010年2月26日 — takeo

Flashみたいに、何枚かの写真をランダムにフェードインフェードアウトしながら表示するバナーを作ってみた。
一応、jQueryのプラグイン形式で(プラグインの作り方はてきとう!)。

画像パスと、リンク先URLをリストでプラグインに渡せば、リストをシャッフルして(最初の1回だけ)順に表示する。5秒置き(初期値)にフェードインフェードアウトしながらパラパラと画像が変わる。

これでiPhoneでもバナーがクリックできる!

サンプル

一応プラグイン形式のソース

/**
 * jQuery Shuffle Bannar plugin
 * Copyright (C) cubdesign | http://www.cubdesign.com/
 * Dual licensed under the MIT <http://www.opensource.org/licenses/mit-license.php>
 * and GPL <http://www.opensource.org/licenses/gpl-license.php> licenses.
 * Date: 2010-02-26
 * @author Takeo Tamura
 * @version 0.5.0
 */

(function($) {
    var name_space = 'shuffleBannar';
    $.fn[name_space] = function(options) {
        var elements = this;

        var settings = $.extend({
            'bannarList' : [],
			'interval':5000,
			'fadeOutTime' : 1000,
			'fadeInTime' : 1000
        }, options);

		var addData = function (v) {
            $.data(v, name_space, {});
            return $(v);
        };

		/*
		* シャッフルする
		*/
		var shuffle = function (targetArray)  {
			var i  = targetArray.length;
			 while (i) {
				var j  = Math.floor(Math.random() * i);
				var x  = targetArray[--i];
				targetArray[i] = targetArray[j];
				targetArray[j] = x;
			 }
			return targetArray;
		};

		//キャッシュ防止用
		var nocache = new Date().getTime();

		var bannarList = settings.bannarList;
		//シャッフル
		bannarList = shuffle(settings.bannarList);

		//今表示しているバナーの番号
		var currentBannarNumber = -1;

		//インターバルID
		var iId = -1;

		/*
		* バナーを変更する
		*/
		var changeBannarImage = function ()  {
			clearInterval(iId);
			 $("#shuffleBannar img:first").fadeOut(settings.fadeOutTime,function(){
				$(this).remove();
				loadBannarImage();
			 });

		};
		/*
		* バナーを読み込む
		*/
		var loadBannarImage = function ()  {
			currentBannarNumber++;

			if( currentBannarNumber == bannarList.length ){
				currentBannarNumber = 0;
			}

			var targetBannar = bannarList[ currentBannarNumber ];

			var imageURL = "" + targetBannar.image + "?nocache="+nocache;
			var linkURL = "" + targetBannar.link;

			var img = new Image();

			 $(img).load(function(){
							$(this).hide();
							$("#shuffleBannar").append(this);
							$(this).fadeIn(settings.fadeInTime);
							$(this).click(function(){location.href=linkURL;});
							iId = setInterval(changeBannarImage,settings.interval)
						}).attr('src', imageURL)

		};

        elements.each(function() {
			addData( this );
			loadBannarImage();
        });

        //method chain
        return this;
    };
})(jQuery);

ページ読み込み時にFlashにフォーカスを与える(firefox)

2010年2月17日 — takeo

Flashでタイピングゲームを作っていて、ページ読み込み時にFlashにフォーカスがあたらなくて使いづらいなと思いやり方を調べてみた。ページ読み込み時にjavascriptでfocus();するといいらしいが、firefoxでフォーカスできない。

Javascriptのfocusはこんな感じ。
swfobjectを使っている場合は、addLoadEventやaddDomLoadEventのイベントで呼べばいい。

	var flashObjectId =  "sample";
	var expressInstallPath = "../../../js/libs/swfobject/expressInstall.swf";
	var flashTargetVersion =  "9.0.0";
	var flashvars = {};
	var params = {};
	swfobject.embedSWF("StartFocusSapmle.swf",flashObjectId, "320", "240", flashTargetVersion,expressInstallPath, flashvars, params);

	function setFocusOnFlash() {
	  var fl = document.getElementById(flashObjectId);
	  if (fl) { fl.focus(); }
	}

	if (swfobject.hasFlashPlayerVersion(flashTargetVersion)) {
		swfobject.addLoadEvent(setFocusOnFlash);
		//swfobject.addDomLoadEvent(setFocusOnFlash);
	}

ただ、これだとfirefoxはだめ。調べているうちにwmodeをopaqueかtransparentに設定すればいいという情報が。いろいろ試してみると、

ページ読み込み後にFlashに自動フォーカスするサンプル(wmode:”window”)

ページ読み込み後にFlashに自動フォーカスするサンプル(wmode:”opaque”)

ページ読み込み後にFlashに自動フォーカスするサンプル(wmode:”transparent”)

確かに、wmodeをopaqueかtransparentに設定するとフォーカスがあたった。
ただし、このwmodeは曲者で、opaqueやtransparentに設定すると日本語に入力がおかしくなる。firefoxでは、まともに入力さえできない。
flash側からExternalInterfaceでjavascriptのfocus();をやってみたりしたが実現できず。断念。

今回のタイピングゲームは英数字だけなのでこれでいいのだが、普通に使うのには中途半端だ。
英語にかぎればこれでなんとかなる(日本語の入力をするFlashを作ることもあまりないのだけど)

今回はこれでいこう。

	var flashObjectId =  "sample";
	var expressInstallPath = "../../../js/libs/swfobject/expressInstall.swf";
	var flashTargetVersion =  "9.0.0";
	var flashvars = {};
	var params = {wmode:"transparent"};
	swfobject.embedSWF("StartFocusSapmle.swf",flashObjectId, "320", "240", flashTargetVersion,expressInstallPath, flashvars, params);

	function setFocusOnFlash() {
	  var fl = document.getElementById(flashObjectId);
	  if (fl) { fl.focus(); }
	}

	if (swfobject.hasFlashPlayerVersion(flashTargetVersion)) {
		swfobject.addLoadEvent(setFocusOnFlash);
		//swfobject.addDomLoadEvent(setFocusOnFlash);
	}

※あと、opaqueやtransparentモードにすると、FlashのEvent.ACTIVATE、Event.DEACTIVATEイベントが拾えないみたいだ。きもちわるい
サンプルソース

package com.cubdesign.sample.startfocus {
	import fl.controls.Label;
	import fl.controls.TextInput;

	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.external.ExternalInterface;

	/**
	 * @author takeo
	 */
	public class StartFocusSapmle extends Sprite {
		private var label : Label;
		private var text : TextInput;

		public function StartFocusSapmle() : void {
			if (stage) {
				init();
			} else {
				addEventListener(Event.ADDED_TO_STAGE, init);
			}
		}

		private function init(e : Event = null) : void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			stage.addEventListener(Event.ACTIVATE, windowActivete);
			stage.addEventListener(Event.DEACTIVATE, windowDeActivete);

			drawBackground();

			label = new Label();
			label.text = "読み込み完了";
			addChild(label);

			label.move(100, 70);

			text = new TextInput();
			addChild(text);

			text.move(100, 100);

			//ExternalInterface.call("setFocusOnFlash");

			text.setFocus();
		}

		private function drawBackground() : void {
			var g : Graphics = this.graphics;
			g.beginFill(0xffffcc);
			g.drawRect(0, 0, 320, 240);
			g.endFill();
		}

		/**
		 * フォーカスアウト
		 */
		private function windowDeActivete(event : Event) : void {
			label.text = "windowDeActivete";
		}

		/**
		 * フォーカスイン
		 */
		private function windowActivete(event : Event) : void {
			label.text = "windowActivete";
			text.setFocus();
		}
	}
}

Macromedia Flash Media Server 2の価格

2005年12月5日 — takeo

Macromedia Flash Media Server 2の価格をみてテンションが下がった。

Developer Edition 10 無償提供
Professional Edition 100 546,000円
Professional Edition 100 546,000円
Origin Edition 5000 5,460,000円

来年から青色申告することもあり、経費で固定IPの光にして自宅サーバーをたててFlashコミュニケーションサーバー、Flaxを入れていろいろ実験してみようと思っていた。まえの50接続6万円くらいのものを想定していたこともあり、この値段になっとくがいかない。高すぎ。スタンダード版50接続10万くらいのパッケージが必要じゃないのか?? 個人には手のとどかない存在になってしまった。

iTunes Music Store RSS Generator

2005年8月30日 — takeo

iTunes Music StoreのRSSを生成できるサービス。
iTunes Music Store RSS Generator

rss2.0で、New Releases、Just Added、iTunes Top Songs、iTunes Top Albums、Featured Albums & ExclusivesのRSSが国別で生成できる。

生成したRSSからは、タイトル、ジャケット写真、リリース日、ジャンル、価格などが取得できる。もちろんiTunesの購入画面へのリンク付き。

まーiTunes専用って感じ。試聴用のmp3のURLでもあればFlashから有意義に利用できるのだが、Appleさんお願いします。

Ant task in Eclipse with MTASC and Swfmill

2005年8月16日 — takeo

Flashを使わず、swfにlogo画像(.png)を使いたくなったので、swfmill を試してみることに。

このswfmill、XMLからSWFが作れるすぐれもの。もちろんライブラリへの画像の読み込みも可能。ただ、コマンドラインから実行するアプリなのでEclipseでコンパイル→テスト(playerで再生)がスムーズにできない。そこでバッチファイルを作ったりしていろいろ模索していたところいいものを発見!

Antを使ってSwfmillでライブラリを読み込みSWFをつくり、MTASCでクラスファイルをコンパイルを自動化するってこと。こんな感じ↓に画像が読み込めた。

20050816.jpg

参考にしたのは、

FAMES: FAME + Swfmill = Fully open source flash

Ant task in Eclipse with MTASC and Swfmill

BlogViewer

2005年8月15日 — takeo

20050815.jpg

最近またFlashにハマリはじめた。BlogViewer

作ったはいいが、ここ1週間、MTASKにはまっていて、手つかずに。このMTASK、FlashいらずのswfコンパイラーでFlashの10~100倍?コンパイルが速い。まったくストレスなくコーディング→テスト→コーディング→テストが繰り返せる。

ずっとSEPY ActionScript Editorでのコーディングをしていたが、このMTASKのコンパイルは微妙。SEPYから起動するMTASK GUIとのSEPYとの連携がイマイチで使いづらい。またMTASKのFlash8パブリッシュが、MTASK GUIのFlashPlayerのバージョンが7のため、ブラウザで確認が必要になり面倒。

って、こともありSEPY ActionScript EditorからEclipseのASDT(AS Development Tool)に乗り移る。ASDTとFlashoutとMTASKの連携でかなり快適なコーディング環境ができあがる。

ASDTは、大きなバグ?があり、ASDTでasファイルを開いて編集していると、UTF-8のBOMマークがはずれてしまい、FlashMX2004から開けなくなる。もちろんそのasを使っているswfは、コンパイルできなくなる。

ってことで、ASDTでつくったファイルは、このASDT、Flashout、MTASK専用となってしまう。EMエディタなどで、BOMマークを付けて保存しなおせばFlashからもつかえるが。

そんなこんなで、Flashなし、V2コンポーネントなしのコーディングを始めることにした。
20050815_2.jpg

コンポーネントを一から作りなおし、これから地味にコーディングを続ける。

FDEの登場に期待している。これはいい◎。

macromedia 『STUDIO 8』登場!

2005年8月8日 — takeo

macromedia 『STUDIO 8』の予約販売が開始された。

MX2004の次は、8。

Freehandがなくなり、Contribute 3, FlashPaper 2が追加された。早速Abobe買収の影響か?Freehandは淘汰されイラストレーターに軍配が・・・。

ざっと、新機能をみてみた。

* Dreamweaver 8 Feature Tour ›
* Flash Professional 8 Feature Tour ›
* Fireworks 8 Feature Tour ›

何となく、Flash中心の構成になってきたなぁって感じ。Dreamweaverは、HomeSite、ColodFusion Studioの機能が追加され、プログラマーにいい仕様に。相変わらず、スタイルシート機能のパワーアップ。これは多分期待はずれになりそう。Fireworksはフィルターやブレンドモードが追加され、フォトショップの機能をもらったのか?ってまた買収のにおいを感じた。
FlashこのTourでは、おもにビデオのことが中心で、新しく加わったファイルアップロード機能など、ActionScriptの新機能にはふれていなかった。残念なのが、ActionScriptEditor。全然変わってない。

まださわってはいないが、今回のバージョンアップは微妙。Flashにしても、MTASCで十分じゃないかって思う。ビデオを使っている人以外は、あんまり目新しいバージョンアップではなかったと思う。でも買うけどね。

訂正・・・。「Flash Player 8 スピードUP調査。」

2005年7月14日 — takeo

Macromedia、Flash Player 8βの提供を開始Flash Player 8 スピードUP調査の訂正。

スピードUP調査。いろんな重そうなサイトのFlashで実験したが、いまいち実感がわかず・・・。唯一、Flash Math Creativity Second EditionのデモサイトでスピードUPを確認することができた。

って書いてしまってが、ウソだった。IEにFlash Player 8、Firefox Flash Player 7をいれて実験してみた。→Firefox Flash Player 7の勝利!??。

結局、IE ActiveXと、Firefox プラグインの違いで起こっていた現象だった。ポンコツActiveX。結局違いわからず・・・・・。残念。

Macromedia、Flash Player 8βの提供を開始

2005年7月13日 — takeo

ついに『Flash Player 8』登場

Slashdotの記事

Macromedia、Flash Player 8βの提供を開始

“米Macromediaは、現地時間12日から、Flash Player 8のβ版の提供を開始した。

Flash Player 8β

ながらく待った『Flash Player 8』がようやく登場した。ベータバージョンだが、とりあえず、Firefoxにインストールしてみた。

Flash Player 8といえば、フォントのレンダリングの改善とスピードUPが期待したいところ。早速、IE Flash Player 7とFirefox Flash Player 8を比べてみた。

フォントのレンダリングは、ぜんぜん変化が見られない。スクリーンショットをとって地味に比べてみても変化なし。これは、Flash Player 8形式で書き出す必要があるんだろうか?

スピードUP調査。いろんな重そうなサイトのFlashで実験したが、いまいち実感がわかず・・・。唯一、Flash Math Creativity Second EditionのデモサイトでスピードUPを確認することができた。

David Hirmes > spring > spring01 のコンテンツを再生し、クリックを連打すると、あきらかにFlash Player 8のほうがスムーズに動いていた。◎

この実験は、IE ActiveXと、Firefox プラグインの違いかもしれないがとりあえず信じることにしよう。いいニュースだった。

AdobeのMacromedia買収について前向きに考える。

2005年4月21日 — takeo

AdobeのMacromedia買収は正直衝撃的だった。
まさに金持ちは勝つ。ライバル会社を買収するって敵対的買収になるんじゃないか。
なんだか汚いお金の動きを見ているみたいで嫌気が差していたが・・・。

前向きに考えてみる。

AdobeとMacromediaが合体すると、

  • Flashにイラストレーターの操作性が追加されるのかもしれない。
  • Flashにプレミア、アフターエフェクトの動画編集機能がつくのかもしれない。
  • Fireworksを見習って、イラフォトっていうのができるのかもしれない。
  • PDFでActionScriptが使えるようになるかもしれない。
  • イラストレーターにフォントグラファーのようなフォント作成機能がつくのかもしれない
  • Flashにディメンションのような3D機能がつくのかもしれない。
  • ActionScriptにフォトショップのフィルターが内臓されるのかもしれない。
  • ColdFusionとインデザインが融合して動的に印刷ができるようになるのかもしれない。
  • FlashでSVGが使えるようになるのかもしれない。

っといろいろな妄想が広がる。
なんだか切ないが、いい方向で進むことを祈る。

(c) 2010 cubdesign | powered by WordPress with Barecity