Home‎ > ‎例文と解説‎ > ‎

Example 3

新規の平面レイヤーを作成し、そのレイヤーに新規にマスクシェイプを設定する


レイヤーはアクティブになっているコンポジションに作成されます。マスクシェイプはコンポジションよりも100ピクセル内側の矩形とします。


例文


var myActiveItem = app.project.activeItem;
var mySolidCol = [0.75, 0, 0];
var mySolidName = 'Mask layer';
var myShape = new Shape();
var mergin  = 100;



if(myActiveItem !==null && myActiveItem instanceof CompItem){

    // シェイプの形状を設定します。
    // ちょっとわかりずらいですが、コンポジションのサイズからマージンを引いて頂点の位置を設定しています。

    myShape.vertices = [[mergin, mergin], 
                        [(myActiveItem.width - mergin ), mergin], 
                        [(myActiveItem.width - mergin ),(myActiveItem.height - mergin)], 
                        [mergin, (myActiveItem.height - mergin )]];

    //新規に平面レイヤーを作成します。

    var mySolid = myActiveItem.layers.addSolid( mySolidCol,
                                                mySolidName, 
                                                myActiveItem.width,
                                                myActiveItem.height,             
                                                myActiveItem.pixelAspect );

    //平面レイヤーのマスクプロパティに新しいシェイプグループを作成します。

    var myShapeGroup =  mySolid.mask.addProperty('ADBE Mask Atom');

    myShapeGroup.name = 'Mask mergin'; //マスクシェイプの名前

    //マスクシェイプを設定
    myShapeGroup.maskShape.setValue(myShape);

    //マスクの境界を25ピクセル(プロパティ)
    myShapeGroup.property('ADBE Mask Offset').setValue(25);
    
    //マスクを反転する(アトリビュート)
    myShapeGroup.inverted = true;

}



解説


マスクシェイプを新規に作成するのも少し手順がややこしく、理解しにくくなっています。この例ではPropertyBase objectMaskPropertyGroup objectShape objectのそれぞれの役割に注目してサンプルを作成してみました。

マスクシェイプの形状は、冒頭のShape objectに格納します。この例では直線だけの矩形なのでverticesの設定のみです。

var myShape = new Shape();

    myShape.vertices = [[mergin, mergin], 
                        [(myActiveItem.width - mergin ), mergin], 
                        [(myActiveItem.width - mergin ),(myActiveItem.height - mergin)], 
                        [mergin, (myActiveItem.height - mergin )]];

これ自体はマスクの形状の情報だけですので、新規平面にマスクを追加して、そのマスクシェイププロパティとして設定する必要があります。

マスクがまったくない状態からマスクシェイプを作成するには、まず平面のLayer objectのマスクプロパティにMaskPropertyGroup objectaddProperty()で追加しないといけません。

 var myShapeGroup =  mySolid.mask.addProperty('ADBE Mask Atom');


ここのmaskShapeプロパティに、先に設定したShape objectをsetValue()設定することで、やっとマスクシェイプが描かれます。

myShapeGroup.maskShape.setValue(myShape);

myShapeGroupはMaskPropertyGroup objectなのですが、マスクの境界のぼかしや拡張などは、これの子オブジェクトの
PropertyGroup objectから設定するのですが、マスクの反転などはアトリビュートで設定するという点に注意してください。この辺が混乱しがちです。

    //マスクの境界を25ピクセル(プロパティ)
    myShapeGroup.property('ADBE Mask Offset').setValue(25);
    
    //マスクを反転する(アトリビュート)
    myShapeGroup.inverted = true;



Comments