Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Разбить слово на буквы (http://www.flasher.ru/forum/showthread.php?t=126633)

KiL33 24.06.2009 08:58

Разбить слово на буквы
 
Допустим, пишем ‘123’ и разбиваться число должно как
Цитата:

1
2
3
Код AS1/AS2:

var btn:MovieClip = this.createEmptyMovieClip("btn", 3);
btn.beginFill(0xFF0000);
btn.moveTo(10,10);
btn.lineTo(100,10);
btn.lineTo(100,30);
btn.lineTo(0,30);
btn.lineTo(0,10);
btn.endFill();
btn._y = 35;
btn._x = 20;
var pole_txt:TextField = btn.createTextField("pole_txt", 4, 0, 5, 0, 0);
pole_txt.autoSize = true;
pole_txt.text = 'кнопка';
btn.onPress = substr_f;
///////////////////
 
var txt:TextField = this.createTextField("my_txt", 998, 20, 20, 100, 20);
txt.type = "input";
txt.border = true;
function substr_f() {
        txt_len = txt.length;
        for (var i:Number = 0; i<txt_len; i++) {
                var mySubstring:String = my_txt.text.substr(i);
                trace(mySubstring);
        }
}

У меня получается неправильно
Цитата:

123
23
3

alexcon314 24.06.2009 09:15

А типа split() с данной задачей не справится?
Код:

function substr_f() {
        var sp_arr:Array = my_txt.text.split("");
        trace(sp_arr);
}


Juice_Green 24.06.2009 09:15

может так попробывать?
Код AS1/AS2:

var num:Number=123;
var num_arr:Array=num.toString().split('');
for(var i:Number=0;i<num_arr.length;i++){
        trace(num_arr[i]);
}


BeDLiNt 24.06.2009 09:16

Зачем вам substr - Возвращает подстроку из символов, начинающихся с заданного элемента startIndex. Длина этой строки определяется параметром len.

Просто my_txt.text(i)

nOobCrafter 24.06.2009 11:35

сам на днях делал точно такое же, проблем почему то не возникло(
Код AS1/AS2:

//////////////-------------- Функция заполнения --------------//////////////
function fillClip(hmc:MovieClip, str:String):Void
{
        var strArr:Array = str.split('');
        var total:Number = strArr.length;
        var offset:Number = 0;
 
        for(var i:Number = 0; i < total; i++)
        {
                var mc:MovieClip = hmc.createEmptyMovieClip('mc' + i, hmc.getNextHighestDepth());
 
                var mcFTM:TextFormat = new TextFormat();
                        mcFTM.size = 16;
                        mcFTM.bold = true;
                        mcFTM.color = 0x999999;
                        mcFTM.font = "Trebuchet";          // это линкеджй встроенного шрифта
 
                var mcTF:TextField = mc.createTextField('mcTF', 0, 0, 0, 10, 10);
                        mcTF.selectable = false;
                        mcTF.text = strArr[i];
                        mcTF.autoSize = true;
                        mcTF.embedFonts = true;            // внимание, юзаю встроенный шрифт!
                        mcTF.setTextFormat(mcFTM);
 
                        mc._x = offset;
                offset += (mc._width + 2);
 
        }
}
var str:String = 'I know, what you were doing last summer...';
var hmc:MovieClip = this.createEmptyMovieClip('hmc', 0);
fillClip(hmc, str);
        hmc._x = (Stage.width - hmc._width) / 2;
        hmc._y = (Stage.height - hmc._height) / 2;


MyChemic 24.06.2009 11:54

Код AS3:

for (i=...)
trace(my_txt.substring(i,1));


KiL33 24.06.2009 17:35

Цитата:

Сообщение от alexcon314 (Сообщение 830305)
А типа split() с данной задачей не справится?

Действительно..и в хелпе информации достаточно..что-то не сообразил сразу.
Спасибо всем за внимание.

nOobCrafter 25.06.2009 12:22

... извиняюсь, ерунду написал, метод с масисвов более быстр:
Код AS1/AS2:

function sliceStr(str:String):Void
{
        var strLength:Number = str.length;
        for (var i:Number = 0; i < strLength; i++)
        {
                var curLetter:String = str.slice(i, (i + 1));
        }
}
function subStr(str:String):Void
{
        var strLength:Number = str.length;
        for (var i:Number = 0; i < strLength; i++)
        {
                var curLetter:String = str.substring(i, (i + 1));
        }
}
function splitStr(str:String):Void
{
        var strArr:Array = str.split('');
        var strLength:Number = strArr.length;
        for (var i:Number = 0; i < strLength; i++)
        {
                var curLetter:String = strArr[i];
        }
}
 
var count:Number = 1000;
t = getTimer();
for(var i:Number = 0; i < count; i++)
{
        sliceStr('I know, what you were doing last summer...');
}
trace(getTimer() - t);
t = getTimer()// 185
for(var i:Number = 0; i < count; i++)
{
        subStr('I know, what you were doing last summer...');
}
trace(getTimer() - t)// 189
t = getTimer();
for(var i:Number = 0; i < count; i++)
{
        splitStr('I know, what you were doing last summer...');
}
trace(getTimer() - t)// 76



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

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