Можно ли сгенерировать фигуру в 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;
}
Другие вопросы по тегам