Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Стиль пайп-курсора фокуса TextInput (http://www.flasher.ru/forum/showthread.php?t=210344)

gumback 02.03.2015 14:18

Стиль пайп-курсора фокуса TextInput
 
Ребята, добрый день! У меня самая странная задача, которая только могла встретиться на моём пути флешерства, как мне кажется). Есть поле ввода текста TextInput. Но нужно каким-то чудесным образом сделать мигающий пайп (вертикальный слэш курсора фокуса) побольше/пошире. Ну то есть у меня текст сам здоровый, болдовый, но сам пайп настолько маленький и узкий, что его практически не было не видно, если б он не мигал. А игра на телефонах будет, там вообще будет беда и печаль. Очень просили что-то придумать, чтоб сделать его заметнее. Я вот сижу и потухаю... Реально ли это сделать вообще? Если да, ну или как закостылить, то буду рада любой помощи или совету, в какую сторону копать!

nubideus 02.03.2015 16:30

ненавижу мигающую каретку

vadja 02.03.2015 18:17

Код AS3:

import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldType;
import flash.events.KeyboardEvent;
import flash.geom.Rectangle;
import flash.ui.Mouse;
 
var t:TextField = new TextField();
t.text = "TEXT WITH WIDE CARET HACK :D";
t.x = t.y = 20;
t.width = 500;
t.height = 500;
t.alwaysShowSelection = true;
t.multiline = t.wordWrap = true;
t.defaultTextFormat = new TextFormat('_sans',20);
t.type = TextFieldType.INPUT;
addChild(t);
stage.focus = t;
t.addEventListener(KeyboardEvent.KEY_DOWN,kd);
 
var CARET:String = String.fromCharCode(1);
 
function kd(e:KeyboardEvent):void {
        t.text = t.text.substr(0, t.length-1);
        t.text += CARET;
}
t.text += CARET;
 
var selected = false;
function addCaret(){
        if(selected){
                t.setSelection(t.length-1, t.length);
                t.selectable = true;
        }else{
                t.setSelection(t.length,t.length);
                t.selectable = false;
        }
        selected = !selected;
}
 
setInterval(addCaret, 500);//caret blink time

я вот такой хак придумал, не самый красивый канешн, но может сгодится..
правда, если нужно сохранить функцию выделения текста то скрипт надо доработать.

Добавлено через 3 минуты
Но лучше найти фонт такой, чтобы в нём уже был символ каретка (прямоугольник?) и использовать его, то добавляя то убирая.

еще можно какой-то элемент отрисовывать на место каретки, высчитывая координаты.

gumback 03.03.2015 11:52

vadja, спасибо!

Добавлено через 2 часа 10 минут
И ещё одни вопросик - оказывается, что в моей задаче нельзя выделять текст, курсор всегда должен быть в конце текста, как такое можно проделать?


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

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