![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: May 2007
Сообщений: 12
|
есть флешка в которую передается html.
нужно чтобы слово было зачеркнутым. тег strike не помогает как можно такое сделать? |
|
|||||
|
Регистрация: May 2007
Сообщений: 12
|
готов :-)
они сводятся к определению координат слова и рисованию линии? |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Простой вариант из сложных
Простой, потому что не учитывает вариант с разной высотой букв и выводит линию на одной высоте (в примере -6). Если этого достаточно, то гуд, если же будут разные высоты, попробуем придумать более сложный вариант.Для корректной работы примера нужно создать текстовое поле с вшитым шрифтом Times New Roman. import flash.display.BitmapData;
function strike (mc:MovieClip, str:String):Void {
var txt:TextField = mc.txt;
var stru:String = str.split ("<u>").join ("");
stru = stru.split ("</u>").join ("");
stru = stru.split ("strike>").join ("u>");
txt.htmlText = stru;
txt.antiAliasType = "advanced";
var bmp:BitmapData = new BitmapData (txt._width, txt._height, true, 0x0);
bmp.draw (txt);
mc.attachBitmap (bmp, 1);
bmp.scroll (0, -6);
txt.antiAliasType = "normal";
txt.htmlText = str;
}
function createText (name:String, x:Number, y:Number):MovieClip {
var mc:MovieClip = this.createEmptyMovieClip (name, this.getNextHighestDepth ());
mc._x = x;
mc._y = y;
var txt:TextField = mc.createTextField ("txt", 0, 0, 0, 350, 200);
var fmt:TextFormat = txt.getTextFormat ();
fmt.size = 20;
txt.setNewTextFormat (fmt);
txt.embedFonts = true;
txt.html = true;
txt.wordWrap = true;
txt.multiline = true;
return mc;
}
var str:String = "Пример <strike>зачеркнутого</strike> текста. <u>Пример</u> <strike>зачеркнутого</strike> текста. Пример <strike>зачеркнутого</strike> текста.";
var mc1:MovieClip = createText ("mc1", 50, 50);
mc1.txt.htmlText = "Не работает:<br>" + str;
////
var mc2:MovieClip = createText ("mc2", 50, 300);
strike (mc2, "Работает:<br>" + str);
Последний раз редактировалось iNils; 21.10.2007 в 15:30. |
|
|||||
|
Регистрация: May 2007
Сообщений: 12
|
спасибо, по поводу высоты - все устраивает, т.к текс в одну строчку.
шрифт другой, но думаю я разберусь. еще раз спасибо. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Положи поле со шрифтом, и заграбь TextFormat с него.
Фокус в txt.antiAliasType - при таком сглаживании в битмапу только черточки прорисовываются. Хороший, кстати, фокус. |
|
|||||
|
Регистрация: May 2007
Сообщений: 12
|
а почему только Times New Roman?
В коде это явно не указано. А шрифт который используется Microsoft Sans Serif или Arial (они похожи). Можно как то для них сделать? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Можно, просто надо формат соответствующий указать. Таймс — по дефолту.
|
|
|||||
|
Регистрация: Mar 2008
Сообщений: 215
|
Попробовал перевести на as3 - вот что в итоге вышло:
public class Example extends Sprite {
public function strike(mc:MovieClip, str:String) {
var txt = mc.getChildByName("txt");
var stru:String = str.split ("<u>").join ("");
stru = stru.split ("</u>").join ("");
stru = stru.split ("strike>").join ("u>");
txt.htmlText = stru;
txt.antiAliasType = "advanced";
var bmp:BitmapData = new BitmapData (txt.width, txt.height, true, 0x0);
bmp.draw(txt);
bmp.scroll(0, -6);
mc.addChild(new Bitmap(bmp));
txt.antiAliasType = "normal";
txt.htmlText = str;
}
public function createText(x:Number, y:Number){
var mc:MovieClip = new MovieClip()
mc.x = x;
mc.y = y;
var txt:TextField = new TextField()
txt.width = 350
txt.height = 200
txt.name = "txt"
txt.wordWrap = true;
txt.multiline = true;
//txt.embedFonts = true;
var fmt:TextFormat = txt.getTextFormat()
fmt.size = 20
txt.defaultTextFormat = fmt
mc.addChild(txt)
return mc;
}
public function ButtonExample() {
var str:String = "Пример <strike>зачеркнутого</strike> текста. <u>Пример</u> <strike>зачеркнутого</strike> текста. Пример <strike>зачеркнутого</strike> текста.";
var mc1:MovieClip = createText (50, 50);
var target = mc1.getChildByName("txt")
target.htmlText = "Не работает:<br>" + str;
addChild(mc1)
var mc2:MovieClip = createText (50, 300);
strike(mc2, "Работает:<br>" + str);
addChild(mc2)
}
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|