2017-04-16 43 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; 
} 
相關問題