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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     as2のsetMask()でlineToで書いた複数の図形をマスクにする
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
natoco
Åê¹ÆNo.39383
投稿日時: 2008-7-1 15:42
新米
居住地:
投稿: 3
使用環境:
as2のsetMask()でlineToで書いた複数の図形をマスクにする
似たような投稿がありましたが、
setMaskを利用して複数のマスクを1枚の画像に適応させる
やりたい事がすこし違うので、これでは上手くきませんでした。
やり方が悪いのかも知れませんが、自分では解決ができず、質問させて頂きます。宜しくお願いします。

-------環境----------
Windows XP
Flash CS3
ActionScript2.0
FlashPlayer7,8,9
---------------------


<やりたい事>

createEmptyMovieClip でマスク用MC(areaMask_mc)と、マスクがかかるMC(black_mc)を作る。

black_mcに、lineTo() で半透明の矩形を描く。
areaMask_mcに、lineTo() を使って矩形と円を書く。

black_mc に areaMask_mc をマスクとしてセット。

矩形と円でくりぬかれた、black_mc を表示させたい。

のですが、矩形と円が重なった部分がマスクとして適応されません。

------------------------------------------
asは下記の様に書きました。
円を書くfunctionは野中さんのを使わせて頂いてます<(_ _)>
var areaMask_mc = this.createEmptyMovieClip("areaMaskMc", 2);
var black_mc = this.createEmptyMovieClip("whiteMc", 1);
//
black_mc.beginFill(0x000000,40);
black_mc.moveTo(-190,-93);
black_mc.lineTo(640,-93);
black_mc.lineTo(640,761);
black_mc.lineTo(-190,761);
black_mc.setMask(areaMask_mc);
//
areaMask_mc.beginFill(0xFFFF00,100);
areaMask_mc.moveTo(10,10);
areaMask_mc.lineTo(10,300);
areaMask_mc.lineTo(250,250);
areaMask_mc.lineTo(250,10);
areaMask_mc.endFill();
//
areaMask_mc.beginFill(0xFFFF00,100);
xDrawCircle(areaMask_mc,250,150,100);
areaMask_mc.endFill();


//-------------円を描く
function xDrawCircle(target_mc:MovieClip, nX:Number, nY:Number, nR:Number, nSegments:Number) {
	if (nSegments == undefined) {// 分割数の引数省略時
		nSegments = 8;// デフォルト値設定
	}
	var nAngle:Number = 2*Math.PI/nSegments;// 分割した角度(ラジアン)
	target_mc.moveTo(nX+nR,nY);
	for (var i = 1; i<=nSegments; ++i) {// 指定数に分割して弧を描画
		var nTheta:Number = i*nAngle;// 回転角(ラジアン)
		// アンカーポイントの座標
		var nAnchorX:Number = nR*Math.cos(nTheta);
		var nAnchorY:Number = nR*Math.sin(nTheta);
		// コントロールポイントの座標
		var nControlX:Number = nAnchorX+nR*Math.tan(nAngle/2)*Math.cos(nTheta-Math.PI/2);
		var nControlY:Number = nAnchorY+nR*Math.tan(nAngle/2)*Math.sin(nTheta-Math.PI/2);
		// 弧の描画
		target_mc.curveTo(nControlX+nX,nControlY+nY,nAnchorX+nX,nAnchorY+nY);
	}
}


矩形と円を直接 areaMask_mc に書くのではなく、
areaMask_mc に createEmptyMovieClip で a_mc, b_mc を作り、それぞれに lineTo() で書いたモノも試しましたが、結果は同じでした。

矩形が台形で、4点の値をXMLから取得して描画したいため、attachMovie でなく、lineTo() で書く必要があります。
------------------------------------------

よろしくお願いします。<(_ _)>
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » as2のsetMask()でlineToで書いた複数の図形をマスクにする natoco 2008-7-1 15:42
     Re: as2のsetMask()でlineToで書いた複数の図形をマスクにする mayor 2008-7-1 17:24
       Re: as2のsetMask()でlineToで書いた複数の図形をマスクにする natoco 2008-7-2 11:01
         Re: as2のsetMask()でlineToで書いた複数の図形をマスクにする mayor 2008-7-2 13:07
           Re: as2のsetMask()でlineToで書いた複数の図形をマスクにする natoco 2008-7-3 15:46

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