我进行了搜索和搜索,但弹出的只是“买这个,买那个”。
我是否无法从MS-Word复制文本并且能够在粘贴到我的应用程序时保留格式? (我不是在谈论Flash IDE,我说的是将其粘贴在TLF或其他东西中)
提前感谢。
答案 0 :(得分:2)
确定。下面是它的工作原理。如果你想将单词从word中弹出到flash中的TextField,你需要做这样的事情......
从word中复制后,您需要决定如何将内容弹出到TextField ...您是否想通过做一些KeyboardEvent来尝试使用cmd + v?你想要一个类似“粘贴内容”的按钮吗?无论哪种方式,您将运行一些代码来抓取剪贴板内容并将其弹出到TextField以响应某些事件。所以在你的事件处理程序中做这样的事情:
function onPasteEvent(e:SomeEventType):void{
var pasteData:String = Clipboard.generalClipboard.getData(ClipboardFormats.HTML_FORMAT) as String;
if (pasteData){
txt.htmlText = formatClipboardData(pasteData);
}else{
// probably nothing on clipboard
}
}
现在,formatClipboardData()函数将对剪贴板中的数据进行某种操作。你会注意到来自word的HTML充满了奇怪的东西。你可以剥掉一些,整理一下,在某些情况下使用它们的一些类。在我看到的一些代码中,我有这个:
var s:StyleSheet = new StyleSheet();
s.setStyle(".MsoListParagraphCxSpFirst", {marginLeft : "10px"});
...
txt.styleSheet = s;
为了从单词doc中缩进列表项。您可以使用简单的正则表达式来更改html ...删除不需要的属性和标记。以下是我的formatClipboardData()函数中的一些示例:
// lists were coming in as dots with some space inside a p tag so:
replace(/<p>\·\s+(.*?)<\/p>/g, "<li>$1</li>")
// no need for the body tag:
replace(/<body>|<\/body>/g,"")
// strip attributes from p tags:
replace(/<p(.*?)>/g, "<p>")
etc....