是否可以使用脚本在flv文件中生成形状?

时间:2017-04-16 22:59:38

标签: actionscript-3 flash

我开始使用Adobe Flash CS3(我知道它已经老了,但请耐心等待。)

我想知道是否可以直接在flv画布中生成形状 通过简单地运行脚本,无需拖放任何内容。

我知道我可以通过添加文档类来生成它,如下所示:

package 
{
    import flash.display.*;
    import flash.geom.*;

    public class Script extends MovieClip
    {
        public function Script()
        {
            var r : Shape = new Shape();
            r.graphics.beginFill(0x00ff00);
            r.graphics.drawRect(0, 0, 50, 50);
            r.graphics.endFill();
            this.addChild(r);
        }
    }
}

但是可以直接使用某种一次性运行脚本直接对.flv文件执行此操作(例如,在x = 30,y = 30时将精确的800x300红色矩形插入到当前场景中)?所以它出现在我正在处理的文档上而不运行Control> Test Movie?

如果是这样,我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

这是一个带矩形的例子。将此代码保存到jsfl文件,并在编辑器中使用命令菜单并运行命令。

// Create Rectangle With Fill - Andrew Doll

var dom = fl.getDocumentDOM();
if (dom == null)
{
    alert('Please open a file.');
}
else
{
    // Declare variables.
    var tl = dom.getTimeline();
    var curLayer = tl.currentLayer;
    var curFrame = tl.currentFrame;
    var lockStatus = tl.layers[curLayer].locked;
    var myElements = tl.layers[curLayer].frames[0].elements;

    if (lockStatus)
    {
        alert('Unlock the layer.');
    }
    else
    {

        dom.setFillColor('#0000ff');
        dom.addNewPrimitiveRectangle({left:0,top:0,right:100,bottom:100}, 0); 
        dom.selectNone();
    }
}

答案 1 :(得分:2)

正如Nambew已经回答的那样,你可以通过利用jsfl来做到这一点。我在他的代码中看到的唯一问题是缺少对象选择,因此setFillColor不会应用于绘制的对象。

var leftPadding = 10;
var topPadding = 10;
var w = 30;
var h = 30;
var count = 10;
var dom = fl.getDocumentDOM();
for (var i=0; i<count; i++) {
    dom.addNewRectangle({left:leftPadding, top:topPadding, right:w+leftPadding, bottom:h+topPadding}, 0);
    dom.mouseClick({x:leftPadding, y:topPadding}, false, false);
    dom.setFillColor(Math.floor(16777215*Math.random())); 
    leftPadding+=w*1.1;
    topPadding+=h*1.1;
}