flashアクションスクリプトについて


http://www.trick7.com/blog/2006/09/21-135325.php
こちらで配布してくださっているサンプル(Download:loader.zip(Flash8形式、1.9MB))に
下記のコードを追加して、読み込んだ画像が設定サイズ以上の場合は
リサイズしたいのですがどこにどうやって追加すれば宜しいのか教えてください。

試行錯誤してみたのですが知識が浅く、基本も理解出来ていないためどうにもうまくいきません。
よろしくお願いします。

(元のコードは長いのでこちらへの記載は行いませんでした。)


var size_w:Number = 1500;
var size_h:Number = 1000;

// 変数 hpw に 「高さ/横幅」 の比を取得
var hpw:Number = container._height/container._width;
// もし 「高さ/横幅」 の比が指定サイズの比よりも横長であった場合
if (hpw<size_h/size_w) {
// 横幅を size_w にする
container._width = size_w;
// そして高さもその比に合わせて変える
container._height = size_w*hpw;
}
// もし 「高さ/横幅」 の比が指定サイズの比と同じか縦長であった場合
else {
// 高さを size_h にする
container._height = size_h;
// そして横幅もその比に合わせて変える
container._width = size_h/hpw;
// 中心に寄せる
container._x = (1500 - size_h/hpw) / 2;
}

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/08/22 23:14:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:chibitomo No.1

回答回数98ベストアンサー獲得回数3

ポイント500pt

>読み込んだ画像が設定サイズ以上の場合はリサイズしたい

//これが設定サイズ

var size_w:Number = 1500;

var size_h:Number = 1000;

//読み込んだ画像が設定サイズ以上の場合

if(container._height>size_h&&container._width>size_w){

//ここにリサイズする処理

}else{

//読み込んだ画像が設定サイズ以内の場合

//ここにそれ以外の処理

}

でいいんじゃないかい?

id:worldtravel

ありがとうございます。

そもそも下記ようにすると「0」を返されてしまいます。

listener.onLoadInit = function(target: MovieClip): Void {

trace(container._height);

}

なので、教えて頂いたコードを書いても動作してくれないのです。

よろしくお願いします。

2009/08/22 03:47:16

その他の回答1件)

id:chibitomo No.1

回答回数98ベストアンサー獲得回数3ここでベストアンサー

ポイント500pt

>読み込んだ画像が設定サイズ以上の場合はリサイズしたい

//これが設定サイズ

var size_w:Number = 1500;

var size_h:Number = 1000;

//読み込んだ画像が設定サイズ以上の場合

if(container._height>size_h&&container._width>size_w){

//ここにリサイズする処理

}else{

//読み込んだ画像が設定サイズ以内の場合

//ここにそれ以外の処理

}

でいいんじゃないかい?

id:worldtravel

ありがとうございます。

そもそも下記ようにすると「0」を返されてしまいます。

listener.onLoadInit = function(target: MovieClip): Void {

trace(container._height);

}

なので、教えて頂いたコードを書いても動作してくれないのです。

よろしくお願いします。

2009/08/22 03:47:16
id:chibitomo No.2

回答回数98ベストアンサー獲得回数3

ポイント100pt

listener.onLoadComplete = function(target:MovieClip) {

if (percentage == 100) {

の後にcontainerのかわりにtargetで

trace(target._height);

とすれば値取れると思いますが

読み込まれてるSWFにも問題ないですか。

がんばってください。だめ元で手探りで

いろいろトライ&エラーするのも

上達への道のりの一つです。

またそこからロジカルに処理の流れ、仕組み、方法を

考えるのもいいと思います。

id:worldtravel

これも試してだめっだたようなきがしたのですが...

もう一度やってみます。

ありがとうございます。

あっ 読み込んでいるのは jpg です。


追記です。

やはりダメでした。

「0」と表示されてしまいます。

上記のサイズを変換する処理を入れなければ表示します。

もちろん大きな画像はそのままなので使い物にならないのですが...

2009/08/22 14:28:54
  • id:worldtravel
    どなたかお願いします。
    ついに朝に....

    調べてもわかりませんので......

    思い通りに動きましたら500ポイントお支払いします。

    よろしくお願いします。
  • id:chibitomo
    悪いことしたね。。。
    //ロード開始時の処理
    listener.onLoadStart = function(target:MovieClip) {
    target.stop();
    };
    だと最初のフレーム読み込んでないから
    プロパティ読めないハズ。
    試しにコメントアウトして
    listener.onLoadComplete = function(target:MovieClip) {
    if (percentage == 100) {
    のあとにtrace(target._width)
    とかやってごらん、値は取れるから。

    原因は
    http://fumiononaka.com/TechNotes/Flash/FN0501003.html
    これね。
    では。
  • id:chibitomo
    コメントアウト
    listener.onLoadStart = function(target:MovieClip) {
    //target.stop();
    };
  • id:worldtravel
    ありがとうございます。
    お陰様でうまくいきました。

    ついでと言っては申し訳ないのですが
    もう一点教えて頂けないでしょうか。

    mcLoader.loadClip("./img/" + f, container);

    として、

    hoge.swf?f=foo.jpg

    としているのですが、foo.jpg が取得できません。

    どうすればよいのか教えてください。

    よろしくお願いします。

  • id:chibitomo
    http://osaka.cool.ne.jp/rh-riko/Flash-PHP/flashPHP002.htm

    FYI.





  • id:worldtravel
    mcLoader.loadClip("./img/" + _root.f, container);
    で取れるようになりました。

    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません