トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     複数読み込んだ画像にスムージングを加えリサイズする
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
3-3-3
Åê¹ÆNo.39782
投稿日時: 2008-8-4 16:23
新米
居住地: 大阪近郊
投稿: 3
使用環境:
CS3
Mac 10.4.11
FlashPlayer 7.0r24/8.0r24/9.0r115
Safari 1.3.2 :
複数読み込んだ画像にスムージングを加えリサイズする
画像のスムージング設定 (2)にゃあ プロジェクト

以上のコードを参考させていただきました。
)ひろゆきさまありがとうございます。

全体の流れ:ムービークリップを配置→そのムービークリップに画像を読み込み→
      スムージングをかける→全て読み込んだら→リサイズする
      *リサイズ使用とするが、0番目の画像だけ大きさが取得できず
       違うサイズになってしまいます。

1.配置スクリプトでattachMovieでムービークリップを配置していきます。
2.LoadImage()で画像を読み込みスムージングをかけていきます。
3.(2)のonLoadInitで全てロード終了後(ここが無理矢理なきがします。)に
リサイズの処理に移りますが、0番目に配置した画像のサイズが取得できません。

たぶん無理矢理つくってしまったので、
actionscriptのコードの書き方の基礎的な事が、間違えているようなきがします。
またこのactionscriptのコードの書き方の基礎的な事を勉強する上でおすすめサイトや
書籍があれば教えて頂きたいです。

よろしくお願いいたします。


コード
========================================================================

import flash.display.BitmapData;

//配置スクリプト////////////////////////////////////////////////
MAXKAZU=10;
for (var i = 0; i<=MAXKAZU; i++) {
var attach_mc = mc_scroll.scloll_mc.attachMovie("attach_mc", "attach_mc"+i, i);
attach_mc.i=i;
//attach_mc=w136 h156.4
attach_mc._x = attach_mc._width*i+10*i;
attach_mc._y = 0;

LoadImage();
}

//スムージング処理////////////////////////////////////////////////
z=0;
function LoadImage(){

Path = mc_scroll.scloll_mc["attach_mc"+i];

var imgLoader:MovieClipLoader = new MovieClipLoader();
var imgListener:Object = new Object();

//読み込み後
imgListener.onLoadInit = function(target_mc:MovieClip):Void {
var _mc:MovieClip = target_mc._parent;
bitmapSmoothing(target_mc, _mc.img_mc.img);
trace("zzzz");
z+=1;
if(z==MAXKAZU){trace("Resize"); Resize();}//リサイズ処理へ
};

imgLoader.addListener(imgListener);
Path.createEmptyMovieClip("loader", 1);

imgLoader.loadClip("img/4905823849613.jpg", Path.loader);

function bitmapSmoothing(loader:MovieClip, holder:MovieClip):Void {
var _bd:BitmapData = new BitmapData(loader._width, loader._height, true, 0xFFFFFF);
_bd.draw(loader);
holder.attachBitmap(_bd, 0, "auto", true);
loader.removeMovieClip();
}

}

//リサイズ処理//////////////////////////////////////////////////////////////
function Resize(){

for (var z = 0; z<=MAXKAZU; z++) {

MMM=mc_scroll.scloll_mc["attach_mc"+z];

WWW=mc_scroll.scloll_mc["attach_mc"+z]._width;
HHH=mc_scroll.scloll_mc["attach_mc"+z]._height;

trace(WWW);//画像の横幅
trace(HHH);//画像の縦幅

}
========================================================================
ひろゆき
Åê¹ÆNo.39785
投稿日時: 2008-8-4 16:47
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 複数読み込んだ画像にスムージングを加えリサイズする
アカウント編集」で、編集環境は書いておきましょう
プロフィール・使用環境記入のお願い
#その他の欄に記入すれば、使用環境として表示されるはずです。


実際に用いられているスクリプトを記載するだけでは、説明不足だと思います。
まず、何のムービークリップがどこにあるのか、不明瞭のように思います。

次に、MovieClipLoaderは、同じ処理を行えばよいのでしょうから、
1つで十分なはずですが、複数生成されているところに問題があるように思います。

他の点については、説明されていない部分もあるので、読んでいません。


----------------
質問する際は、回答者に具体的な情報を与えてください。

ひろゆき
Åê¹ÆNo.39786
投稿日時: 2008-8-4 17:10
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 複数読み込んだ画像にスムージングを加えリサイズする
リサイズというのが、何をするものなのかよく分かりませんが。

表示しようとしている画像の数が10ならば、
n <= max ではなく、n < max だと思いますし。

import flash.display.BitmapData;

var max:Number =10;
var loaded:Number = 0;
var imgLoader:MovieClipLoader = new MovieClipLoader();
var imgListener:Object = new Object();
imgListener.onLoadInit = function(target_mc:MovieClip):Void {
	var _mc:MovieClip = target_mc._parent;
	bitmapSmoothing(target_mc, _mc.img_mc.img);
	loaded+=1;
	if (loaded >= max) {
		resize();
	}
};
imgLoader.addListener(imgListener);

for (var n:Number = 0; n < max; n++) {
	var _mc:MovieClip = mc_scroll.scloll_mc.attachMovie("attach_mc", "attach_mc"+n, n);
	_mc.n = n;
	_mc._x = _mc._width*n + 10*n;
	_mc._y = 0;
	loadImage(_mc);
}
function loadImage(mc:MovieClip):Void {
	mc.createEmptyMovieClip("loader", 1);
	imgLoader.loadClip("img/4905823849613.jpg", mc.loader);
}
function bitmapSmoothing(loader:MovieClip, holder:MovieClip):Void {
	var _bd:BitmapData = new BitmapData(loader._width, loader._height, true, 0xFFFFFF);
	_bd.draw(loader);
	holder.attachBitmap(_bd, 0, "auto", true);
	loader.removeMovieClip();
}
function resize(){
	for (var n:Number = 0; n < max; n++) {
		var _mc:MovieClip = mc_scroll.scloll_mc["attach_mc"+n];
		var w:Number = _mc._width;
		var h:Number = _mc._height;
		trace([w, h]);
	}
}


----------------
質問する際は、回答者に具体的な情報を与えてください。

3-3-3
Åê¹ÆNo.39788
投稿日時: 2008-8-4 19:43
新米
居住地: 大阪近郊
投稿: 3
使用環境:
CS3
Mac 10.4.11
FlashPlayer 7.0r24/8.0r24/9.0r115
Safari 1.3.2 :
Re: 複数読み込んだ画像にスムージングを加えリサイズする
ちょんまげら様

ご回答ありがとうございます。

>n <= max ではなく、n < max だと思いますし。
すみません単純なミスで、修正したところ正常に動作しました。

理解不足なところがあり困惑してしまいました。
キレイなスクリプトを書いていただいてありがとうございます。
参考に勉強させていただきます。

ちなみにムービークリップの階層は以下のようになります。
rootにmc_scrollを配置
mcscroll内に[attach_mc+ナンバー]を横一列に並べ、
[attach_mc+ナンバー]内のimg_mc内のimgに画像を読み込みます。


リサイズの処理は以下になります。
126x100のエリアに読み込んだ画像が
width>heightならwidthを126に比率をheightに反映
width<heighならheighを100に比率をwidthに反映

//////////////////////////////////////////////////////////////////////////////////////////
function Resize(){

for (var z = 0; z<MAXKAZU; z++) {

MMM=mc_scroll.scloll_mc["attach_mc"+z];

WWW=Number(mc_scroll.scloll_mc["attach_mc"+z]._width);
HHH=Number(mc_scroll.scloll_mc["attach_mc"+z]._height);
WWW=mc_scroll.scloll_mc["attach_mc"+z]._width;
HHH=mc_scroll.scloll_mc["attach_mc"+z]._height;
//trace(i)

//126x100//サイズ指定
sizeW=126;
sizeH=100;

if(WWW>=HHH)
{
trace("www");
ww=_mc.img_mc.img._width/sizeW;
mc_scroll.scloll_mc["attach_mc"+z].img_mc.img._width=sizeW;
mc_scroll.scloll_mc["attach_mc"+z].img_mc.img._height=mc_scroll.scloll_mc["attach_mc"+z].img_mc._height/ww;
mc_scroll.scloll_mc["attach_mc"+z].img_mc.img._x=0-mc_scroll.scloll_mc["attach_mc"+z].img_mc.img._width/2;
mc_scroll.scloll_mc["attach_mc"+z].img_mc.img._y=0-mc_scroll.scloll_mc["attach_mc"+z].img_mc.img._height/2;
}else
if(WWW<=HHH)
{
hh=MMM.img_mc.img._height/100;
MMM.img_mc.img._height=100;
MMM.img_mc.img._width=MMM.img_mc._width/hh;
MMM.img_mc.img._x=0-MMM.img_mc.img._width/2;
MMM.img_mc.img._y=0-MMM.img_mc.img._height/2;
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////


ひろゆき
Åê¹ÆNo.39789
投稿日時: 2008-8-4 20:30
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 複数読み込んだ画像にスムージングを加えリサイズする
引用:
3-3-3さんは書きました:
ちょんまげら様

ちょんまげらは、名前ではないんですが。


もう少し整理すれば、これくらいにはなると思います。
function resize():Void {
	var sizeW:Number = 126;
	var sizeH:Number = 100;
	for (var n:Number = 0; n < max; n++) {
		var _mc:MovieClip = mc_scroll.scloll_mc["attach_mc"+n];
		var w:Number = _mc._width;
		var h:Number = _mc._height;
		var img:MovieClip = _mc.img_mc.img;
		if(w >= h) {
			var ww:Number = img._width/sizeW;
			img._width = sizeW;
			img._height = _mc.img_mc._height/ww;
			img._x = 0 - img._width/2;
			img._y = 0 - img._height/2;
		} else {
			var hh:Number = img._height/sizeH;
			img._height = sizeH;
			img._width = _mc.img_mc._width/hh;
			img._x = 0 - img._width/2;
			img._y = 0 - img._height/2;
		}
	}
}

resize() は、onLoadInit 内で定義した方がもっとシンプルになる気がしますが。


----------------
質問する際は、回答者に具体的な情報を与えてください。

3-3-3
Åê¹ÆNo.39791
投稿日時: 2008-8-4 20:47
新米
居住地: 大阪近郊
投稿: 3
使用環境:
CS3
Mac 10.4.11
FlashPlayer 7.0r24/8.0r24/9.0r115
Safari 1.3.2 :
Re: 複数読み込んだ画像にスムージングを加えリサイズする
ひろゆきさまですね
失礼しました。

なるほどまとまっていますね!!!!
本当に勉強になりました!
ありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops