【问题标题】:Selecting text or shape fails: "enterEditMode" requires a selection选择文本或形状失败:“enterEditMode”需要选择
【发布时间】:2017-06-25 15:29:45
【问题描述】:

我有以下(无用的)代码,它应该选择当前 Flash 文档中的每个文本元素:

fl.outputPanel.clear();
var textFieldArray = fl.findObjectInDocByType("text", fl.getDocumentDOM());
fl.trace(textFieldArray.length);
for (var i=0; i < textFieldArray.length; i ++){
    fl.selectElement(textFieldArray[i]);
}

令人惊讶的是,这会导致错误

在文件“ObjectFindAndSelect.jsfl”的第 232 行:“enterEditMode”需要选择。

查看文件,selectElement函数的代码是

flash.selectElement = function(elementData, editSymbol)
{
    if (elementData.parent != undefined)
    {
        // go up one level
        flash.selectElement(elementData.parent, true);
    }
    else
    {
        FlashUtils_debugString("flash.selectElement function: element is on the main timeline");
    }

    // select the layer, keyframe and element in the symbol instance
    var layerIndex = FlashUtils_getIndexOfObject(elementData.timeline.layers, elementData.layer);
    var frameIndex = FlashUtils_getIndexOfObject(elementData.layer.frames, elementData.keyframe);
    if ((layerIndex >= 0) && (frameIndex >= 0))
    {
        // go to obj keyframe
        elementData.timeline.setSelectedLayers(layerIndex);
        elementData.timeline.setSelectedFrames(frameIndex, frameIndex);

        // clear all selections in keyframe
        fl.getDocumentDOM().selectNone();

        // select the obj
        elementData.obj.selected = true;

        if (editSymbol)
        {
            // switch to editing the symbol item associated with instance
            document.enterEditMode('inPlace');
        }
    }
    else
    {
        FlashUtils_debugString("flash.selectElement function: parent: failed to get valid layerIndex: " + layerIndex + " or frameIndex: " + frameIndex);
    }
}

我觉得这应该可行;对象的selected 属性在调用document.enterEditMode 之前立即设置为true。修补这个函数,我尝试在elementData.obj.selected = true; 行之后立即添加一行,跟踪选择是否为空。代码如下所示:

elementData.obj.selected = true;
fl.trace(fl.getDocumentDOM().selection.length);

这段代码的输出是0

为什么会出现这个错误?有什么办法可以解决吗?

【问题讨论】:

    标签: flash flash-cs6 jsfl


    【解决方案1】:

    我猜你只能使用 document.selection 来选择符号实例。而且你必须使用 fl.getDocumentDOM().selection = [array of symbol elements]

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多