Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   увеличение/уменьшение размера текста (http://www.flasher.ru/forum/showthread.php?t=197280)

Yulia_V 04.04.2013 18:13

увеличение/уменьшение размера текста
 
Здравствуйте, помогите пожалуйста! Такая задача: Сделать чтоб одна кнопка увеличивала размер (кегль) текста на 1 пункт, а другая уменьшала.

in4core 04.04.2013 18:29

Ну и в чем проблема? textFormat в помощь

Александр Мостовой 04.04.2013 19:47

Код AS3:

var size:Number = 12;
textField.htmlText = '<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Arial" SIZE="' + String(size) + '" COLOR="#0000FF" LETTERSPACING="0" KERNING="1">sdgsdgsdgsadg</FONT></P></TEXTFORMAT>'


Добавлено через 12 минут
Ой, я не знаю почему решил что вам в htmlText нужно :)

В хелпе есть пример работы с TextFormat
http://help.adobe.com/ru_RU/FlashPla...extFormat.html

Как с вызывать обработчики клика на кнопках знаете?

Код AS3:

btn1.addEventListener(MouseEvent.CLICK, btn1_clickHandler);
                        btn2.addEventListener(MouseEvent.CLICK, btn2_clickHandler);
 
                        private function btn1_clickHandler (event:Event):void
                        {
                                increaseFontSize();
                        }
                        private function btn2_clickHandler (event:Event):void
                        {
                                decreaseFontSize();
                        }

В функциях increaseFontSize и decreaseFontSize примеры из Адоби с TextFormat

Yulia_V 05.04.2013 11:14

Не получается пока, он просто делает всё 1-м кеглем при нажатии на обе кнопки. Наверно надо ещё как-то получить текущее значение размера шрифта и к нему прибавлять/убавлять единицу, не подскажете?
Код AS3:

btn_1.addEventListener(MouseEvent.CLICK, btn1_clickHandler);
                        btn_2.addEventListener(MouseEvent.CLICK, btn2_clickHandler);
 
                        function btn1_clickHandler (event:Event):void
                        {
                                var format:TextFormat = new TextFormat();
                                var cur_format:TextFormat = new TextFormat();
                                format.size = +1;
                                txt.txt_txt.defaultTextFormat = format;
                                txt.txt_txt.setTextFormat (format)  ;
                        }
                        function btn2_clickHandler (event:Event):void
                        {
                                var format:TextFormat = new TextFormat();
                                format.size = -1;
                                txt.txt_txt.defaultTextFormat = format;
                                txt.txt_txt.setTextFormat (format)  ;
                        }


yasha005 05.04.2013 12:06

Код AS3:

txt.txt_txt.scaleX = ...
txt.txt_txt.scaleY = ...


Yulia_V 05.04.2013 12:07

yasha005 не, мне нужно чтобы именно размер шрифтовых символов изменялся

yasha005 05.04.2013 12:10

Цитата:

Сообщение от Yulia_V (Сообщение 1128368)
yasha005 не, мне нужно чтобы именно размер шрифтовых символов изменялся

так если вы измените масштаб самого контейнера, то соответственно масштаб символов, находящихся в этом контейнере, тоже изменится

Yulia_V 05.04.2013 12:20

Это строгое условие - размер шрифта должен меняться на 1 пункт.

Добавлено через 8 минут
У меня получилось так:
Код AS3:

function btn1_clickHandler (event:Event):void
                        {
                                var format:TextFormat = new TextFormat();
                                var currentTextFormat:TextFormat = txt.txt_txt.getTextFormat();
                                txt.txt_txt.defaultTextFormat = format;
                                format.size = currentTextFormat.size +1;
                                txt.txt_txt.setTextFormat (format)  ;
                        }

Теперь всё ок

Добавлено через 18 минут
Блин, то же самое на минус не работает:
Код AS3:

btn_1.addEventListener(MouseEvent.CLICK, btn1_clickHandler);
                        btn_2.addEventListener(MouseEvent.CLICK, btn2_clickHandler);
 
                        function btn1_clickHandler (event:Event):void
                        {
                                var format:TextFormat = new TextFormat();
                                var currentTextFormat:TextFormat = txt.txt_txt.getTextFormat();
                                txt.txt_txt.defaultTextFormat = format;
                                format.size = currentTextFormat.size +1;
                                txt.txt_txt.setTextFormat (format)  ;
                        }
                        function btn2_clickHandler (event:Event):void
                        {
                                var format:TextFormat = new TextFormat();
                                var currentTextFormat:TextFormat = txt.txt_txt.getTextFormat();
                                txt.txt_txt.defaultTextFormat = format;
                                format.size = currentTextFormat.size -1; // ошибка ссылается на эту строку
                                txt.txt_txt.setTextFormat (format)  ;
                        }

ошибка: неявное исправление значения статического типа object на возможный несвязанный тип number

Wolsh 05.04.2013 12:43

Код AS3:

                        function btn1_clickHandler (event:MouseEvent):void
                        {
                                var currentTextFormat:TextFormat = txt.txt_txt.getTextFormat();
                                currentTextFormat.size += 1;
                                txt.txt_txt.defaultTextFormat = currentTextFormat;
                                txt.txt_txt.setTextFormat(currentTextFormat);
                        }


Alex Lexcuk 05.04.2013 12:49

Цитата:

ошибка: неявное исправление значения статического типа object на возможный несвязанный тип number
Это просто глюки серии Adobe Flash CS(ваша версия) можно так перехитрить
Так даже будут размер символов с разным шрифтом меняться на 1
Код AS3:

minusBtn.addEventListener(MouseEvent.CLICK,minusClick);
plusBtn.addEventListener(MouseEvent.CLICK,plusClick);
 
function plusClick(e:*){
trace('plusClick');
for (var i:int = 0; i < txt.text.length; i++) {
        var tf:TextFormat = txt.getTextFormat(i, i + 1);
        tf.size+=1;
        txt.setTextFormat(tf, i, i + 1);
}
}
 
function minusClick(e:*){
trace('minusClick');
for (var i:int = 0; i < txt.text.length; i++) {
        var tf:TextFormat = txt.getTextFormat(i, i + 1);
        tf['size']-=1;
        txt.setTextFormat(tf, i, i + 1);
}
}



Часовой пояс GMT +4, время: 21:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.