如何在符号中交换位图使用jsfl

时间:2013-10-23 07:35:48

标签: actionscript-3 flash jsfl

我想将符号中的位图与另一个位图交换,我找到了函数

swapElement

这就是我试过的

var elements = item.timeline.layers[0].frames[0].elements;//item is the symbol

for (var j = 0; j < elements.length; j++) {

    var el = elements[j];

    if (el.instanceType == "bitmap") {
        el.selected = true;//this line not work, so I want a way to make the element selected

        dom.swapElement(targetName);//targetName is another bitmap name that I wanted
    }
} 

2 个答案:

答案 0 :(得分:0)

来自图书馆?然后下面的代码片段可以帮助你

var libItems = fl.getDocumentDOM().library.items;

for (i = 0; i < libItems.length; i++){
if(libItems[i].itemType == “bitmap”){
//found bitmap :)
}

好的,怎么样:

fl.selectElement(el); //instead of el.selected = true;

dom.swapElement(targetName);//assuming you have targetName

如果选择任何(一个项目)位图,它将用名为“image4”的库项目替换它,这是有效的:

var dom = fl.getDocumentDOM();
var selection = dom.selection;

if(selection.length == 1 && selection[0].instanceType == "bitmap")
{
    dom.swapElement("image4");
}

答案 1 :(得分:0)

将selected设置为true将仅在元素在屏幕上时选择元素(并且图层已解锁且可见)。因此,在将selected设置为true之前,应调用library.editItem(item.name)。如果元素在帧x中,则必须使用document.getTimeline()。setSelectedFrames(parseInt(x),parseInt(x)+ 1,true)使帧x成为当前帧。 (因为setSelectedFrames中的错误,我使用parseInt(x)作为强制转换)。为了确保元素是唯一被选中的元素,应该在将selected设置为true之前调用document.selectNone()。

每个实例都有一个libraryItem,因此可能更容易替换libraryItem。 代码here可以用于更具选择性的替换。