カテゴリー別アーカイブ: Flash

Firefox3.6使用時に100%表示のフルフラッシュサイトで常にスクロールバーが表示されてしまう場合の対処方法

Firefox3.6にアップデートしたら、100%表示のフルフラッシュサイトで、ウィンドウサイズが指定した最小サイズ以下になっていないのに、常にスクロールバーが表示されてしまう現象が発生。Firefox3.5では問題なく表示できていたし、他のブラウザでも正常に表示できるようなので原因を調べてみたら、swffitが問題だったみたいです。swffitのバージョンを2.1から2.3.3(2010年1月18日リリース)にアップデートしてみたところ、スクロールバーは消えて正常に表示できるようになりました。

Progressionで作成したFlashコンテンツがFirefoxで表示できない場合の対処方法

Progressionで作成したFlashコンテンツが、Firefoxだけ表示できなく困っていたのですが、Page Saverというアドオンが原因だったみたいです。Page Saverを外してみたところFlashコンテンツが正常に表示できました。根本的な原因はよくわからないし、ProgressionとPage Saverの問題ということでもない気もしますが、念のためそれぞれのバージョンもメモしておきます。

MAMPとMacPortsを使ってローカル環境にMovable Type4をインストールする方法

MAMPとMacPortsを使って、Macのローカル環境にMovableType4をインストールしようと思ったら、以前にWordPressをインストールした時とは違って、モジュールなどのインストールが必要だったりと、なかなか大変な作業だったので大まかな手順をメモ。インストール時のそれぞれのバージョンは、Mac OS X 10.6.2、MacPorts 1.8.1、MAMP1.8.3、Movable Type 4.261。以下のサイトを参考にさせて頂きました。

【参考にさせて頂いたサイト】

MAMPをダウンロードしてインストール

MAMPのサイトから、アプリケーションをダウンロードしてインストール。

Movable Type4をダウンロード

Movable Type4をダウンロードして、MAMPのDocument Root以下のディレクトリに設置。Document Rootは、MAMPをアプリケーションフォルダに置いた場合、「/Applications/MAMP/htdocs/」。

XCodeとX11をインストール

XCodeとX11をインストールしておく必要がある模様。XCodeとX11は、OS Xのインストールディスクからインストール可能です。

MacPortsをダウンロードしてインストール

The MacPorts ProjectよりMacPortsをダウンロード。Snow Leopard、Leopard、Tiger、それぞれのバージョンが用意されているので、自分の環境にあったものをダウンロードしてインストール。

MacPortsの初期化と設定

MacPortsのインストールが完了したら、Terminal.appを起動して以下のコマンドを一行ずつ実行。これで、MacPortsの初期化と設定が行われる模様。

echo 'export PATH=$PATH:/opt/local/bin:/opt/local/sbin/' >> ~/.bashrc
echo 'export MANPATH=$MANPATH:/opt/local/man' >> ~/.bashrc
echo 'source ~/.bashrc' >> ~/.bash_profile
sudo port -d selfupdate
sudo port -d sync

ImageMagick(PerlMagick)をインストール

以下のコマンドを実行して、ImageMagickをインストールする。結構時間がかかる。

sudo port install ImageMagick +perl

DB関連モジュールのインストール

データベースをインストールする。今回は、MySQLを使用するので、SQLiteとSQLite2は不要かもしれないけど、良くわからないのでとりあえずインストールしてみる。これも結構結構時間がかかる。

sudo port install p5-dbi
sudo port install p5-dbd-mysql
sudo port install p5-dbd-sqlite
sudo port install p5-dbd-sqlite2

Perlのパスを変更

Perlのパスを、MacPortsのインストールディレクトリへ変更する(シンボリックリンクというものらしい)。

cd /usr/bin/
sudo mv perl perl.bak
sudo ln -s /opt/local/bin/perl /usr/bin/perl

Movable Typeの設置

MAMPをアプリケーションフォルダに置いた場合、デフォルトでは「/Applications/MAMP/htdocs/」がDocument Rootになるので、ダウンロードして解凍した、MT-4.261-jaフォルダをコピーして、フォルダ名を「mt」などに変更しておく。

この時点で、mt-check.cgiを実行してみたところ、CGIが実行されずソースが表示されてしまったので、とりあえずmt-check.cgiのパーミッションを「755」から「700」へ変更してみたら、無事に「Movable Type システムチェック」が表示された。そのあと、mt-check.cgiのパーミッションを「755」に戻してみたけど、普通にシステムチェックが表示されるみたいで、このあたりの原因はよくわからなかったです。

オプションモジュールのインストール

システムチェックでは、以下の項目が足りないと表示されてるので、ひとつずつインストールしていく。

  • Crypt::DSA
  • IPC::Run
  • Archive::Zip
  • HTML::Entities
  • Crypt::SSLeay
  • GD
  • Archive::Tar
  • IO::Uncompress::Gunzip
  • Digest::SHA1
  • IO::Compress::Gzip
  • XML::Atom
  • Mail::Sendmail
  • HTML::Parser

ひとつのコマンドで複数のモジュールがインストールされる場合もあるみたいだけど、以下のコマンドをすべて実行した段階で、システムチェックですべての項目が「インストールされています」になった。

sudo port install p5-gd
sudo port install p5-crypt-dsa
sudo port install p5-archive-zip
sudo port install p5-xml-atom
sudo port install p5-mail-sendmail
sudo port install p5-ipc-run

htaccessの設置

MAMPを使用する場合、CGIを実行できるディレクトリが「/Applications/MAMP/cgi-bin/」のみに制限されているようなので、htaccessで制限を解除する。以下をコピペして、テキストデータとして保存する。ファイル名はあとでリネームするので、とりあえず適当でよい。保存したテキストデータを、MAMPのDocument Rootで指定してあるディレクトリに置いて、TransmitなどのFTPクライアントからファイル名を「.htaccess」に変更する。

Options +ExecCGI
AddType application/x-httpd-cgi .cgi .pl

データベースの作成

MAMPを起動してスタートページを開き、メニューよりphpMyAdminをクリック。今回インストールするMovable Type用のデータベースを作成する。「新規データベースを作成する」というところに、作成したいデータベース名を入力(今回はmt)、照合順序は「utf8_general_ci」を選択して、「作成」ボタンをクリック。これでデータベースが作成される。

mt-config.cgiの修正

/Applications/MAMP/htdocs/mtの中に、mt-config.cgi-originalというファイルがあるので、複製して「mt-config.cgi」にリネーム、テキストエディタで開き、以下の項目を修正する。

CGIPath    http://localhost:8888/mt/
StaticWebPath    http://localhost:8888/mt/mt-static
# MySQL
ObjectDriver DBI::mysql
Database mt(Movable Type用に作成したデータベース名)
DBUser root
DBPassword root
DBHost localhost

上記の修正の他に、以下の二行を追記する。

DBSocket /Applications/MAMP/tmp/mysql/mysql.sock
DBPort 8889

POSTGRESQLとSQLITEの部分は、行の先頭に「#」を付けてコメントアウトしておく。これを忘れるとエラーになってしまうので注意。

##### POSTGRESQL #####
#ObjectDriver DBI::postgres
#Database DATABASE_NAME
#DBUser DATABASE_USERNAME
#DBPassword DATABASE_PASSWORD
#DBHost localhost

##### SQLITE #####
#ObjectDriver DBI::sqlite
#Database /path/to/sqlite/database/file

Movable Typeの設定

MAMPを起動した状態で、ブラウザから「http://localhost:8888/mt/」にアクセスするとMovable Typeの設定ウィザードが表示されるので、Movable Type 4 ドキュメントを参考に設定を完了させる。

以上の流れでなんとかローカル環境でMovable Typeを起動することができました。

[AS2]FlashでSWFや画像などを外部から読み込む際にキャッシュさせない

FlashコンテンツでSWFや画像データを外部から読み込む際に、ブラウザでキャッシュさせない方法をメモ。頻繁に更新する必要のあるFlashコンテンツでは、更新した内容が反映されない可能性あるので、キャッシュ対策が必要。

具体的には、読み込みたいデータのパスに「?=現時刻」をプラスしてあげて、常に別のデータとして読み込ませる。例えば、CASA FrameworkのMediaLoadを使用して、test.jpgを外部から読み込む場合のキャッシュ対策はこんな感じ(ほぼCASAのサンプルそのままです)。

this.stop();
Stage.align = "TL"; 
Stage.scaleMode = "noScale";

import org.casaframework.load.media.MediaLoad;

this.createEmptyMovieClip("loadZone_mc", this.getNextHighestDepth());

function onImageLoadProgress(sender:MediaLoad, bytesLoaded:Number, bytesTotal:Number):Void {
    trace(bytesLoaded + "/" + bytesTotal + " bytes have been loaded into " + sender.getMovieClip());
}

var nowDate:Date = new Date();//現時刻を取得してnowDateに設定
var mediaLoad:MediaLoad = new MediaLoad(this.loadZone_mc, "test.jpg" + "?=" + nowDate);
this.mediaLoad.addEventObserver(this, MediaLoad.EVENT_LOAD_PROGRESS, "onImageLoadProgress");
this.mediaLoad.start();

現時刻の部分は、ユニークな値であれば問題ないと思うので、乱数など他の値でもでも問題ないと思われます。ちなみに画像データだけでなく、swfやxmlなどでも同じ方法でキャッシュ対策可能。

【参考にさせて頂いたサイト】

[AS2]Flickr API経由で取得した画像がFlashで表示されない

Flashで、Flickr API経由で画像を表示するテストをしてみたら、ローカル環境では問題なく表示されるのに、サーバにアップロードしたら何も表示されない。いろいろ検証してみたところ、Flickrから取得した画像にスムージングをかけようとすると、何も表示されない模様。Flash Player8以上で、外部画像を読み込んだ場合、シャギーが出てギザギザの画像になってしまうので、スムージングを適用したかったのだけど、なかなかうまくいかなかったので、解決方法をメモ。スムージングについては、以前書いた、「[AS2]Flashで外部から読み込んだ画像データにスムージングを適用する」を参照。

System.security.loadPolicyFile("http://api.flickr.com/crossdomain.xml");
System.security.loadPolicyFile("http://farm1.static.flickr.com/crossdomain.xml");
System.security.loadPolicyFile("http://farm2.static.flickr.com/crossdomain.xml");
System.security.loadPolicyFile("http://farm3.static.flickr.com/crossdomain.xml");
System.security.loadPolicyFile("http://farm4.static.flickr.com/crossdomain.xml");

上記のスクリプトを追加すると、スムージングを適用しても問題なく表示可能でした。クロスドメインとかセキュリティーの問題と思われます。

【参考にさせて頂いたサイト】
鮭とプログラムとかサン「スライドショー 2