Можно ли сгенерировать фигуру в FLV-файле с помощью сценария?
Я начинаю с 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 сразу с помощью какого-то сценария однократного выполнения (например, вставить ровно красный прямоугольник размером 800x300 в мою текущую сцену при x=30, y=30)?; чтобы он появился в документе, над которым я сейчас работаю, без запуска Control>Test Movie?
Если так, как я могу сделать это?
2 ответа
Вот пример с прямоугольником. Сохраните этот код в файл 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();
}
}
Как уже ответил 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;
}