Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Название дублированных movieclip - как лучше? (http://www.flasher.ru/forum/showthread.php?t=66477)

TryToBeASuperStar 08.07.2005 03:05

чтобы узнать две или одну - надо ставить проверку на длину имени??? :-/

dilsh 08.07.2005 12:57

можешь сначала проверить не на длину а на наличие буквы
(-2,1) берет передпоследнюю
лучше скопируй это на первый кадр (нового файла) и поиграйся
thename = "mc53";
trace((thename.substr(-2, 1)));
if (isNaN(thename.substr(-2, 1))) {
mynum = Number(thename.substr(-1, 1));
} else {
mynum = Number(thename.substr(-2, 2));
}
trace(mynum);

TryToBeASuperStar 08.07.2005 13:05

dilsh

Спасибо за подсказку! Всё работает, вот немного доработал для разной длины имени:
Цитата:

NameLength = this._name.length;
if (NameLength == 6) {
_root.NPtest = Number(this._name.substr(-1,1));
}
if (NameLength == 7) {
_root.NPtest = Number(this._name.substr(-2,2));
}
}
Может можно это как-то ещё упростить?

P.S.
Пока писал, ты уже ответил :D

Всё равно - может можно как-то код упростить до одной строки? Кстати, а нет функции, которая бы просто из всей строки выбирала только цифры??? ;)

Nirth 08.07.2005 13:10

Код:

var val:Number = ( this._name.length==6) ? 1:2;
_root.NPtest=parseInt(this._name.substr(Math.abs(val)*(-1),Math.abs(val)));


TryToBeASuperStar 08.07.2005 13:15

я бы не сказал, что это проще :-/
в моём варианте все функции простые - 2 сравнения, 1 действие.

в этом же всё выглядит страшно и непонятно %) да и действий не меньше.

Огого, с каждой минутой всё краше %)))
По-сути кол-во сравнений только одно, но колво действий больше из-за необходимости умножения и Math.abs.

Но всё равно спасибо за вариант - буду знать как проводить сравнение в одну строку.


Повторюсь: Кстати, может есть функция, которая бы просто из всей строки выбирала только цифры???

dilsh 08.07.2005 13:29

лучше пользуйся примером 22
он независимо от длины берет одну или 2 последние цифры

на твой вопрос насчет только цифр ответа не знаю
может и есть

TryToBeASuperStar 08.07.2005 13:41

dilsh
Понял. Ещё раз спасибо.

============================

Повторюсь: Кстати, может есть функция, которая бы просто из всей строки выбирала только цифры???

============================

Кстати, а почему в моём исходнике не получается продублированным клипам назначить переменную??? Кто-нибудь смотрел?

K.A.T.A.F.A.L.K.E.R 08.07.2005 17:38

Цитата:

Сообщение от MIX-er
кстати в дублируемом обявлять переменную впрнципе и не нада..))) ;-)

В MX не надо... А в MX 2004 в большинстве случаев без этого не работает... В AS2 строгости добавилось ;)
З.Ы. Самый большой фак - если не обьявить нужную переменную в руте... Иногда такой гемор получаецца!!! )) :p

K.A.T.A.F.A.L.K.E.R 08.07.2005 17:59

function GetNums(TTG:String):String{
var tempStr:String = "";
var vals:String = "09";
for(i=0;i<TTG.length;i++){
if(TTG.charCodeAt(i)>=vals.charCodeAt(0) && TTG.charCodeAt(i)<=vals.charCodeAt(1))
tempStr+=TTG.charAt(i);
}
return(tempStr);
}

на тебе... )) Пишешь GetNums("HELLO123"); - получаешь 123 ;) :rolleyes:

TryToBeASuperStar 09.07.2005 03:21

спасибо большое, действительно работает! :)

но, поймите правильно, я бьюсь на за изысканность, уникальность и крутизну скрипта, а за его скорость - чем проще и быстрее - тем лучше!

поэтому всё же может хоть кто-нибудь посмотрит исходник и скажет как там в продублированных клипах назначить переменную??? это будет быстрее чем высчитывать номер из названия?


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

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