タグ:Flash ( 14 ) タグの人気記事
Java,AdobeReader,FlashPlayerで更新通知を出さない方法
ターミナルサーバで、AdobeReaderやFlashPlayerを入れていると、一般ユーザがログインするたびに更新を促すメッセージが表示される場合があり、ユーザを困惑させかねない場合が少なく有りません。


ということで、AdobeReader,FlashPlayer関連で更新通知等の情報を表示させない方法です。

AdobeReaderの更新通知
管理者権限で、AdobeReaderを起動し、メニューバーの編集→環境設定→アップデータ→アップデートのダウンロードやインストールを自動的に行わない にチェックを付けます。
これは以下のレジストリでも設定できるようです。

HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Adobe ARM\1.0\ARM
"iCheck"の値
0: アップデータのダウンロードやインストールを自動的に行わない
1: (使用されていません)
2: アップデートを自動的にダウンロードするが、インストールするときは指定する
3: 自動的にアップデートをインストールする。


参考:
Adobe:アップデータの自動チェックを変更または無効にする方法

AdobeReaderの品質向上ダイアログ
AdobeReaderでまれに品質向上にご協力ください的なダイアログが出ることがあります。
これも管理者権限でAdobeReaderを起動し、メニューバーのヘルプ→製品向上プログラム で、「いいえ、必要ありません」を選べばOKです。

もしくは、管理者権限のコマンドプロプントで、以下のレジストリを追加するといいようです。

reg add HKLM\SOFTWARE\Policies\Adobe\APIP /v enabled /t reg_dword /d 00000000


参考:
Adobe: 製品向上プログラムのダイアログボックスを停止するには

AdobeReaderのEULA同意する
アップデート後AdobeReaderを起動すると、EULAの同意するかどうかを聞いてきます。
これも管理者権限で最初に同意してしまえば問題ないようです。


FlashPlayerの更新通知
Flashはログインするたびにダイアログウィンドウが出てくるので非常に邪魔くさいです。(特に11.2より前)
Flash Player 10.3以降であれば、コントロールパネルにFlashPlayer設定マネージャーがあるので、それの 高度な設定→アップデートの有無をチェックしない にしておけばいいようです。
Flash Player 10.3より前であれば、グローバル通知設定パネル から設定する必要あるようなので、http://www.macromedia.com/support/documentation/jp/flashplayer/help/settings_manager05.htmlで、リリース情報通知のチェックをのけてしまえばいいようです。

また、mms.cfgを使う方法もあります。
これについての詳細はAdobe Flash Playerをグループポリシーで自動展開したいを参照ください。

参考:
Adobe:設定マネージャー
Adobe:Flash Player による自動更新の通知を無効にする方法


Javaの更新通知
Javaもアップデートの情報をタスクトレイのバルーン表示で通知します。
これは、コントロールパネルの Javaコントロールパネル→アップデートタブ→アップデートを自動的にチェック をOFFにしてしまうといいようです。

参考:
Windows Vista(R)でJavaの最新バージョン更新通知を非表示にする方法


ただ、更新通知を解除する場合は管理者が責任をもって、新しいセキュリティパッチがでたら更新するべき必要がありますね。
[PR]
by Jehoshaphat | 2013-03-28 22:52 | 豆知識 | Trackback | Comments(0)
Adobe Flash Playerをグループポリシーで自動展開したい
グループポリシーの[ソフトウェア]インストール
AdobeReader Xをグループポリシーで自動展開したいと思ったけど。。でAdobeReaderの展開方法を書きました。かなり厄介でした。
今回はFlashPlayerの展開方法です。

これは簡単でした。

再頒布できるインストーラファイルを手に入れようとするには、アドビ - Flash Playerライセンスから申し込みをします。

そして、Adobeから送られてくるメールにあるURLをつついて、ダウンロードページに飛びました。
FlashPlayerの場合、AdobeReaderのようにメジャーバージョンだけMSIと言うことは有りません。
すべてのバージョンがMSIが提供されているので、それをダウンロードしてグループポリシーの[ソフトウェア]インストールで設定するだけでOKでした。


スクリプトを使ってサイレントインストール(自動更新もついでに無効)
Adobeから入手した再頒布インストーラファイルには、MSI形式以外にもexe形式のものもあります。
このexeタイプのインストーラをサイレントインストールする方法ですが、Adobe Flash Player 10.1をサイレントインストールする方法 - http://pnpk.netに載ってました。
/install もしくは -install をつければいいようです。

install_flash_player_11_active_x_32bit.exe /install


また、スクリプトを使って自動更新を無効にする方法ですが、Adobe:IT 管理:Flash Player 自動更新の設定によると、インストール先(x86 %WINDIR%\system32\Macromed\Flash\ , x64 %WINDIR%\SysWow64\Macromed\Flash)に、mms.cfg というファイルを作成し、その中にパラメータと値を指定してやればいいようです。
(2012年3月末にリリースされた11.2からは バックグラウンド自動更新機能が追加されました。それまではいちいちログオン時に更新通知が開いてユーザが手動でアップデートする必要がありましたが、11.2以降はその必要はないようです。)
パラメータと値は以下のとおりです。

AutoUpdateDisable=1
SilentAutoUpdateEnable=0


もし、バックグラウンドで通知を出さず自動更新させる場合は以下のようにします。

AutoUpdateDisable = 0
SilentAutoUpdateEnable = 1


更新通知のみをユーザに通知するには以下のようにします。

AutoUpdateDisable=0
SilentAutoUpdateEnable=0
AutoUpdateInterval=0 (更新チェック間隔 デフォor-1:7日 0:OS起動時 n:n日)


ただ、FlashPlayer11はDirectX9.0以上が必要なようです。
DirectX9.0未満だと、インストール時に「d3d9.dllが見つかりません」というようなエラーになります。
AdobeのページにはXP,IE7以上しか書いてませんが、IE6でもAcitveX版Flashはインストールできました。
ちなみに、XPでもSP2を当てると、DirectX9になります。
ということで、スクリプトにXP SP2以上かどうかという条件を加える必要があるかと思います。


FlashPlayerのバージョンですが、以下のレジストリから取得できるようです。
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX\Version
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerPlugin\Version


参考:
ttp://www.adobe.com/special/products/flashplayer/fp_distribution3.html
Flash Playerの自動更新間隔をカスタマイズする: べつになんでもないこと
Flash Playerのバージョンを調べる - @IT
Flash Playerをバックグラウンドで自動更新させる - @IT
Flash Player の自動更新について - 特に重要なセキュリティ欠陥・ウイルス情報
[PR]
by Jehoshaphat | 2013-03-20 21:46 | 豆知識 | Trackback | Comments(0)
FlashPlayer11.5にしたらIEでWebページが応答しなくなった
Windows MultiPoint Server 2011を使っています。
IEは9で、FlashPlayerのプラグインを入れています。

FlashPlayerを最新版(11.5.502.110)にアップデートしたところ、Flashを使っているページが軒並み応答なしの状態になりました。
IEをセーフモード(アドオン無し)で起動すると正常に表示されます。

仕方ないので、一回FlashPlayerをアンインストールし、保存しておいた11.4.402.278をインストールしようとしましたが、ゾンビファイルが残っているらしく旧バージョンはインストール出来ないと言います。

Flash Player をアンインストールする方法からアンインストーラーを手に入れ、実行し、一回再起動して11.4.402.278を入れたらすんなり入りました。

試しにFlashコンテンツを含むWebページを開くと正常に動作しました。

原因はわかりませんが、Webが正常表示されないと困りますね。
[PR]
by Jehoshaphat | 2012-12-04 01:38 | Webがらみ | Trackback | Comments(0)
FlashPlayerがエントリポイントが見つかりませんというエラーを出す
PC起動時に、下記のようなエラーがでました。

FlashUtil10b.exe - エントリポイントが見つかりません

プロシージャエントリポイントGetSystemWow64DirectoryA がダイナミックリンクライブラリ KERNEL32.dll から見つかりませんでした。



FlashUtil10b.exe は %systemroot%\system32\macromed\flash にあるらしいのですが、このバージョンが古いとダメなようです。
このexeは最新のFlashがあるかどうかチェックしてアップデートを促すもののようです。

FlashPlayerを入れ直すとOKなようです。

参考:
FlashPlayer 10とGetSystemWow64DirectoryA - Windows 2000 Blog
Adobe系嫌い - BLOG of Lieutenant Q゛ - Yahoo!ジオシティーズ

ちなみに、Windows2000ってFlashPlayer使えるけど、サポート切られているようです。
FlashPlayer 10.2と Shockwave Player 11.5.9.620 - Windows 2000 Blog
[PR]
by Jehoshaphat | 2012-05-11 21:13 | 豆知識 | Trackback | Comments(0)
(Flash Lite)テキストの横スクロール方法
Flash Lite 1.1 で右から左にスクロールするテキスト(IEの MARQUEE タグみたいなもの)を作ってみました。(内容は今まで小ネタで出してきたものも含んでます)
これが結構苦労したんですよね。。。

イメージとしてはケータイで au Style やトップページ表示したときにカーソルがボタンオーバーした時だけ背景色とテキスト色変えてスクロールさすというものです。

ターゲットパスの構成としては _root → Button → MovieClip → ダイナミックテキスト てな感じにしてます。

なお、ボタンにインスタンス名が使えない Flash Lite 1.1 では一つのムービークリップを複数のインスタンスで共有化することができないので、表示する個数分用意します。(ボタンも同じ)

・ムービークリップ側
まず、ムービークリップ側の実装です。
1フレーム目にダイナミックテキストを配置します。
このダイナミックテキストの変数名を txt_linkScroll とします。

そして、1フレーム目のアクションを下記のように記述。
//ダイナミックテキストに表示する文字列代入
txt_linkScroll = _root.strLink0 ;
 
//フラグが立っている時だけスクロールする。フラグがtrueになるのはカーソルオーバー時のみ
if ( _root.linkScrollFlg0 == true ){
//画面内に収まるなら何もしない
if ( mblength( txt_linkScroll ) <= 14 ){
stop();
}
//1文字何ピクセル? 文字列の末尾が画面左端に来た時にまた右端に戻すためのタイミング調整に必要
//ダイナミックテキストは16ptのデバイスフォント
//scrlCntはフラグ。フォーカス当たってからの初回のスクロールか、2位回目以降のスクロールか
if (scrlCnt < 1 ){
charPx = 17;
}else{
charPx = 30;
}
 
//スクロール量
scrollpx = 3;

//何回目か
iCnt++ ;

//文字列長のピクセル分スクロールしたっぽいなら位置リセット。
if ( iCnt * scrollpx > mblength( txt_linkScroll ) * charPx ){
iCnt = -8 ;
setProperty( "" , _x , 240 ); //ムービークリップの位置を左端に。
scrlCnt = 1;
}

//左へスクロール
setProperty( "" , _x, getProperty( "" , _x) - scrollpx);

 
}else{
scrlCnt = 0;
}
 
2フレーム目にはenterFrameイベントの代用として1フレーム目にループするようにします。
 
//enterFrame イベントの代用
gotoAndPlay(1);


・ボタン側
↑で作ったムービークリップをボタンに配置します。
今回カーソルオーバー時に背景に色付けて、文字色を白にしたいので、アップとオーバーは別のキーフレームにします。
オーバーのフレームで配置したムービークリップを選択し、プロパティから「カラー」で「着色」を選択し、文字色を決めます。
背景色は別レイヤーを作り、短径ツールで適当に作ります。


・シーン側(呼び方あってるんかな? 要はルートのムービークリップのことです)
シーンにボタンを配置し、ボタンアクションに下記のようにスクリプト書きます。
要はスクロールさすかどうかのフラグの状態を決めてるだけです。
//フォーカス受け取った時
on(rollOver) {
//スクロール開始
_root.linkScrollFlg0 = true;
}
 
//フォーカス抜けた時
on(rollOut){
//スクロール停止
_root.linkScrollFlg0 = false;
}
 
//ボタン押下時
on(press){
getURL( _root.strLink0Url );
}


あと、1フレーム目のアクションスクリプトにフラグ関係の変数を定義しときます。
_focusrect = false ;//ボタンフォーカスを消す
_root.strLink0 = "スクロールテストテキストスクロールテストテキスト";
_root.strLink0Url = "http://jehupc.exblog.jp";
//スクロールリンクテキストのスクロールするか否かのフラグ定義(5つボタン要した場合ね)
for ( i = 0 ; i<5; i++){
eval("_root.linkScrollFlg" add i ) = false;
}


基本的にはこれで横スクロールテキストは完成するんですが、一つ問題が。。
それはムービークリップ自体をx方向に移動させてるため、横方向いっぱいになってしまうということです。つまり、スクロールエリアは Y:20px~200px までということができないのです。

かなり悩んだあげく強硬手段でこの問題を解決することにしました。
それは、背景絵を用意し、スクロールエリアとするところだけ切り抜いて、スクロールボタンよりも上のレイヤーに配置するというものです。
これだと、スクロールエリアをはみでることはありませんが、作るのとメンテが入った時が厄介です。

無理やりな手段使ってますが、一応こんな感じで実装させてみました。
[PR]
by jehoshaphat | 2009-09-03 22:26 | Flash/ActionScript | Trackback | Comments(0)
(Flash Lite)ボタン押下時のイベントハンドラにやられた

Flash Lite 1.1 の話。
ボタンを幾つか用意して、あるボタンを押すと任意のURLを開くっていう極々一般的なことをしようと思ってます。

で、ネットでケータイ用のイベントハンドラ探して、ボタンのインスタンスに書いたのは下記のようなコードです。
//ボタン1のイベントハンドラ
on(keyPress "<Enter>") {
getURL( "http://jehupc.exblog.jp/" );
}
//ボタン2のイベントハンドラ
on(keyPress "<Enter>") {
getURL( "http://www.google.com" );
}

これで実行すると、ボタン2を押下しても、ボタン1のイベントが走ってしまうのです。


で、かなり悩んだ挙句見つけたのが、サンデープログラマーのメモ: keyPress"ボタン番号"についてです。

ここで、on(keyPress"ボタン番号"){}はそのボタンにフォーカスがなくてもボタンを押せば反応するという記述が。。。

試しに、Device Cetral でswf起動してどこのボタンにもフォーカスが当たってない状態で決定ボタン押下するとボタン1のイベントハンドラが動いてます。

ここでピンときて、各ボタンインスタンスに書いてた on(keyPress"ボタン番号"){} を全てのけて、代わりに on(press){} を書くと案の定、要件どおりに動きました。
普通の Flash と同じようにあるボタンで決定キー押下した時の処理は on(press){} で書いてやればよかったんですね。

で、on(keyPress"ボタン番号"){} はフォーカスない時に制御するもんだから、基本的に1つだけ実装するということもわかりました。

最初に on(keyPress"ボタン番号"){} を書いてしまったが故にこの問題解決するのに相当時間がかかってしまいました。。。
(なので on(keyPress"ボタン番号"){} の方法でメニューとか実装しようとすると、1つのボタンだけ on(keyPress"ボタン番号"){} 実装し、後のメニューボタンは今どのボタンにフォーカスがあるっていうのをグローバル変数とかに入れて、on(keyPress"ボタン番号"){}実行時に if や switch で振り分けるという作りにしないと行けないということです。)

後、これも不思議な仕様ですが、on(keyPress"ボタン番号"){} 書いてると、on(press){} は動かないんですね。。。


参考:
Adobe:ボタンイベントの処理
[PR]
by jehoshaphat | 2009-09-01 23:37 | Flash/ActionScript | Trackback | Comments(0)
(Flash Lite)ボタンでマウスオーバー時にダイナミックテキストの色を変更したい
今回の要件は、Flash Lite 1.1 でボタンのマウスオーバー時にボタン内にあるダイナミックテキストの表示色を変更したいというものです。
さらに、ダイナミックテキストは変数を使って任意のタイミングで変更できるようにします。

ダイナミックテキストの文字列は変数で簡単に変更できますが、色とかその他のプロパティは難しいみたいですね。

いろいろ方法はあると思うんですが、3流PGが採用したのは下記の方法です。

1.ムービークリップを作成し、その中にダイナミックテキストを配置(変数を指定しておく)。
2.クリップの1フレーム目にダイナミックテキストを変更する処理を入れる。(例: txt=_root.tst01; とか)
3.↑で作成したムービークリップをボタンのアップとオーバー、ダウンフレームに配置。
4.オーバーフレームで、配置したムービークリップを選択し、プロパティから「カラー」で「着色」を選択し、色を決める。

動的にカラーを変更することはできませんが、あらかじめオーバー時はこの色にするってきまってる場合は使えます。


他にもカラー毎にムービークリップを作成し、同じ変数名にして、それらを違うフレームに配置し gotoAndStop でアクセスするという方法がOKWave:ActionScript(携帯)についてに書かれてました。
[PR]
by jehoshaphat | 2009-09-01 23:35 | Flash/ActionScript | Trackback | Comments(0)
(Flash Lite)onClipEvent(enterFrame)がない
普通、Flash でフレーム毎に処理したい時は下記のように enterFrame イベントを使います。
onClipEvent(enterFrame){
//フレーム毎の処理
}


しかし、Flash Lite 1.1 では enterFrame イベントがサポートされてません。
んじゃ、どやってフレーム毎の処理すりゃええんじゃということになりますが、下記のようにフレームをループさせればいいようです。

1フレーム目に、ムービークリップおいて、フレーム毎に処理する ActionScript を書く。
2フレーム目に、gotoAndPlay(1); で1フレーム目に戻るようにする。

これでループとなるので、onClipEvent (enterFrame) とほとんど同じ事が実現可能となります。

参考:
教えて!goo:Flash Lite1.1ではonClipEvent(enterFrame)が使えません。ではどうすれば?
1ka2ka.com:Flash Lite 1.1 の基本が分かる8つのポイント
[PR]
by jehoshaphat | 2009-09-01 18:07 | Flash/ActionScript | Trackback | Comments(0)
(Flash Lite)動的メニューを作るために外部ファイル読み込もうとしたけど。。。
Flah Lite 1.1の話。
今回動的なメニューを作ろうと思い、メニューに表示する文字列を定義したテキストファイルを用意し、それを最初に読み込んでダイナミックテキスト変数に代入ってことを考えました。

で、外部テキストファイルの読み込みは loadVariables() 関数で出来るっぽいです。
コードはこんな感じです。
loadVariables("linkString.txt", _root);


テキストファイルの中身はこんな感じです。
strLink0=メニュー1の文字列&strLink1=メニュー2の文字列&strLink2=メニュー3の文字列

で、ちゃんと読めたかどうかを確認するためのコード。(Flash Lite 1.1では配列をサポートしてないので、変数名末尾に数値を加えて仮想配列とするといいらしいです。参考:配列 Array 代用)
for ( i = 0 ; i<3; i++){
trace( eval("strLink" add i ) );
}

最初に読み込ませたいためこれらのコードを _root のムービークリップの1フレーム目に書いて動かしてみたんですが、全然読み込まれている気配がありません。
で、いろいろ調べてるとほとんどの機種の携帯ではキーイベントが無いと loadVariables() が走らないようにしてるようです。
これは、swf再生しただけでユーザーが自動的に携帯情報などを取得されないようするための仕様のようですが、非常にうっとしいです。

今回は初期表示のメニュー内容を動的に変えたいのに、ユーザーのキー操作が無いとダメだったら意味ないですね。
ということで、結局swf内部にテキスト埋め込むことしかできないという結論に至りました。
(auのトップページとか Flash Lite でニュースのヘッドライン表示してるんですが、どうやって動的に変えてるんでしょうね。。。非常に疑問です。)

参考:
Adobe Flash Liteリファレンス: loadVariables():
TUNK(タンク):【FlashLite1.1】Flash Lite 1.1における外部データ読み込み

FLASHで遊ぼう!: Lite1.1:3.外部のテキストファイルを読み込む:

KDDI au: Flashコンテンツ > 技術情報
[PR]
by jehoshaphat | 2009-09-01 18:06 | Flash/ActionScript | Trackback | Comments(0)
(Flash Lite)クリップアクションが使えない
Flash Lite 1.1 でボタンを配置して、オーバーフレームにとあるムービークリップを置いて、そのムービークリップに対してムービークリップアクションを書いてみたんですが、全然動いてる風に見えません。

で、調べてみると、「Flash4のActionScriptでは,クリップアクションが使用できないため,...」というのを見つけました。
Flash4 ベースの Flash Lite 1.1 ではクリップアクションが記述できないんですね。
ムービークリップ内のフレームアクションに書いてもいいんですが、そうするとインスタンス毎に違う処理をさせたい時にシンボルをインスタンス数分作らないと行けないので、部品の共通化ができなくなるんですよね。。。
まぁ仕方ないか。。。
[PR]
by jehoshaphat | 2009-08-31 17:02 | Flash/ActionScript | Trackback | Comments(0)