2017-04-16 24 views
0

我开始使用Adobe Flash CS3(我知道它很老,但忍受着我)。是否可以使用脚本在flv文件中生成一个形状?

我想知道是否可以通过简单地运行脚本直接在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的红色矩形)?这样它就会显示在我目前正在处理的文档上,而无需运行“控制”>“测试影片”。

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

+0

FLV是一种视频格式,你的意思是SWF或FLA文件?如果您想在Adobe Flash中修改时间轴或场景,则需要使用JSFL。 http://help.adobe.com/en_US/flash/cs/extend/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fe8CS5.html – Nambew

+0

fla文件;我想自动将形状放入我的项目smalltalk风格。 – Dmitry

+0

看看这个答案http://stackoverflow.com/questions/2261869/fill-figure-with-jsfl – Nambew

回答

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(); 
    } 
} 
+0

有没有办法添加一个Shape对象而不需要将属性提取到新地图中? – Dmitry

+0

addNewRectangle和addNewPrimitiveRectangle在方法签名中使用边界对象。 – Nambew

+0

因此,没有办法使用jsfl添加displayobject/shape而不使用填充和边界来创建它? – Dmitry

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; 
} 
相关问题