SSブログ
ActionScript ブログトップ

外部画像ファイルを読み込む時にキャッシュから読み込ませない [ActionScript]

Flashで外部からjpgファイル等を読み込んで表示させる際、
ブラウザがファイルをキャッシュしてしまい、キャッシュからファイルを読み込もうとします。
それを防ぐために、読み込むファイルに変動するクエリーストリングを追加してあげれば、
キャッシュから読み込まずに、その都度ファイルを読み込んできます。


//loadMovieで、乱数を使う場合。
var img_mc:MovieClip = this.createEmptyMovieClip("image_mc", 1);
var rnd:Number = Math.floor(Math.random()*10000);
img_mc.loadMovie("http:⁄⁄hogehoge.com/img.jpg?q=" + rnd);

//MovieClipLoaderを使って、タイムスタンプを使う場合。
var img2_mc:MovieClip = this.createEmptyMovieClip("image2_mc", 2);
var obj_mcl = new MovieClipLoader();
var dt = new Date();
obj_mcl.loadClip("http:⁄⁄hogehoge.com/img.jpg?q=" + dt.getTime(),img2_mc);


※ブラウザの設定などによっては、ブラウザにキャッシュが無尽蔵に溜まるので注意
※ファイル名指定をhttpから始まるURLでは無く相対パスで指定した場合、Flashでプレビューを行うとエラーが起こる。


外部CSSを読み込んでTextFieldに設定する [ActionScript]

外部のCSSファイルを読み込んで、FlashのTextFieldにスタイルシートを適用する方法。
その際、テキストフィールドはhtmlプロパティをtrueにし、
入力テキストはhtmlTextにタグを含めた文字を設定する。
そしてスタイルシートが適用されたTextFieldは読み取り専用になってしまう。

style = new TextField.StyleSheet();
style.onLoad = function(success){
   if(success){
    css_txt.styleSheet = style;
    css_txt.html = false;
    css_txt.htmlText = "<div>こんにちは♪</div>";
   }
}
style.load("design.css");


CSS:

div{color:#0000ff;font-size:16px;text-align:center;}


Flashの右クリックメニューをカスタマイズする [ActionScript]

関連記事:Flashの右クリックメニューを禁止する

Flashの右クリックで表示されるメニューに自作メニューを追加してカスタマイズする方法。
ただし、メニューに追加できるのは15アイテムまで。
メニューの見出しは100文字以内で、制御文字、改行は無視されてしまい、
更に、「Macromedia」「Flash Player」「Settings」「Adobe」 という文字が含まれると、
そのメニュー項目自体が表示されません。
(大文字/小文字関係なく)(「Adobe」はPlayer9からかも?)

var mymenu_cm = new ContextMenu();

var hellomenu_cmi = new ContextMenuItem();
var hellomenu2_cmi = new ContextMenuItem();

//1つ目のメニューを設定
//見出し表示
hellomenu_cmi.caption = "れうるーらからのあいさつ";
//有効・無効
hellomenu_cmi.enabled = true;
//上にセパレータを表示するか
hellomenu_cmi.separatorBefore = false;
//表示・非表示
hellomenu_cmi.visible = true;
//押された時に呼び出す関数
hellomenu_cmi.onSelect =
    function(obj:Object, menuItem:Object) {text1_txt.text = "こんばんは♪";}

//2つ目のメニューを設定
hellomenu2_cmi.caption = "文字を赤に変更";
hellomenu2_cmi.enabled = true;
hellomenu2_cmi.separatorBefore = false;
hellomenu2_cmi.visible = true;
//関数名で設定
hellomenu2_cmi.onSelect = funcChangeRed;

//メニューに登録
mymenu_cm.customItems.push(hellomenu_cmi);
mymenu_cm.customItems.push(hellomenu2_cmi);

_root.menu = mymenu_cm;

//2つ目のメニューから呼び出される関数
function funcChangeRed(obj:Object, menuItem:Object)
{
     text1_txt.textColor = 0xFF0000;
}


FlashでIMEを操作する [ActionScript]

ActionScriptでIMEの有効・無効を設定する場合。

System.IME.setEnabled(true/false);

IMEの変換モードを指定する場合。

System.IME.setConversionMode("変換モード");
変換モード:
全角英数:ALPHANUMERIC_FULL
半角英数:ALPHANUMERIC_HALF
ひらがな:JAPANESE_HIRAGANA
全角カタカナ:JAPANESE_KATAKANA_FULL
半角カタカナ:JAPANESE_KATAKANA_HALF
中国語:CHINESE
韓国語:KOREAN

ただ、System.IME.setEnabled(false);にしてIMEをオフにしても、
半角/全角キーを押すと、IME入力が出来てしまう・・・。

どうしても半角英数字しか入力させたくない場合はどうするのがいいのやら・・


FileReference.browse()で指定した拡張子のみダイアログに出す [ActionScript]

FileReference.browse()またはFileReferenceList.browse()で、
選択されたフォルダに拡張子のフィルタをかけて、設定した拡張子のみダイアログに出す方法。

FileReference.browse
  ([{description: "ファイルタイプの説明",
   extension: "セミコロンで区切られた拡張子リスト"}]);

import flash.net.FileReferenceList;
import flash.net.FileReference;

var listener:Object = new Object();

listener.onSelect = function(fileRefList:FileReferenceList) {
  var list:Array = fileRefList.fileList;
  var item:FileReference;
  for(var i:Number = 0; i < list.length; i++) {
    item = list[i];
    item.upload("アップロード用CGIのURL");
  }
}

var fileRefList:FileReferenceList = new FileReferenceList();
fileRefList.addListener(listener);

//抽出するファイルリストの作成
var fileDescription = "画像ファイル(*.jpg; *.jpeg; *.gif; *.png)";
var fileExtension = "*.jpg; *.jpeg; *.gif; *.png";
var fileDescription2 = "HTMLファイル(*.html; *.htm)";
var fileExtension2 = "*.html; *.htm";
var fileDescription3 = "全てのファイル(*.*)";
var fileExtension3 = "*.*";

fileRefList.browse
   ([{description: fileDescription, extension: fileExtension},
    {description: fileDescription2, extension: fileExtension2},
    {description: fileDescription3, extension: fileExtension3}]);


JavaScriptからFlash内のActionScriptを呼び出す [ActionScript]

JavaScriptからActionScriptを呼び出す方法。

import flash.external.ExternalInterface;
ExternalInterface.addCallback(methodName:String,
                     instance:Object,method:Function);

methodName:JavaScriptから呼び出す際に使う名前
instance:対象のオブジェクト
method:JavaScriptから呼び出されるActionScript関数

ActionScript:

import flash.external.ExternalInterface;

function showMessage(astrMessage) {
  textBox.text = String(astrMessage);
}

ExternalInterface.addCallback("setMessage", this, showMessage);


JavaScript:

function callAS(){
   //flashObjectIdはActionScriptを呼び出す対象となるSWFのid 
   document["flashObjectId"].setMessage("JavaScriptから呼び出されたメッセージ");
}


Flashの右クリックメニューを禁止する [ActionScript]

Flashの右クリックで表示されるメニューを禁止(厳密には右クリックが全くできなくなる訳ではないが)する方法。(※注 Flash7(MX2004)以降)

 

var mymenu_cm = new ContextMenu();
//全部(設定以外)の右クリックメニューを表示させなくする場合
mymenu_cm.hideBuiltInItems();


//個別にメニューの表示を設定する場合(true/falseで設定)
mymenu_cm.builtInItems.zoom = false; //拡大、縮小、100%表示、すべて表示
mymenu_cm.builtInItems.quality = false; //画質
mymenu_cm.builtInItems.play = false; //再生
mymenu_cm.builtInItems.loop = false; //ループ再生
mymenu_cm.builtInItems.rewind = false; //巻き戻し
mymenu_cm.builtInItems.forward_back = false; //先送り、戻る
mymenu_cm.builtInItems.print = false; //プリント

_root.menu = mymenu_cm;



FlashからJavaScriptを呼び出す [ActionScript]

FlashからJavaScriptを呼び出す方法。

import flash.external.ExternalInterface;
ExternalInterface.call("JavaScriptのメソッド名",[パラメーター1:Object,…]);

 

ActionScript:

import flash.external.ExternalInterface;
var message:String = "こんにちは";
ExternalInterface.call("showMessage", message);


 

JavaScript:

<script type="text/javascript">
function showMessage(astrmessage){
    alert("Flashからのメッセージ" + astrmessage);
}
</script>


ActionScript ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。