Хорошо. Вот как это работает. Если вы хотите перенести содержимое из Word в TextField во флэш-памяти, вам нужно сделать что-то вроде этого ...
После того, как вы скопируете из word, вам нужно решить, как вставить содержимое в TextField ... вы хотите попробовать использовать cmd + v, выполняя некоторые действия KeyboardEvent? Хотите ли вы иметь кнопку с надписью «Вставить содержимое»? В любом случае, вы будете запускать некоторый код, чтобы захватить содержимое буфера обмена и вставить его в 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 () будет выполнять какие-то манипуляции с данными из буфера обмена. Вы заметите, что 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....