Вход

Просмотр полной версии : Изменение текста спустя некоторое время


Toxedo
28.10.2007, 23:52
Возникла проблема.
Нужно сделать чтобы через N секунд (через 2-е допустим), после нажатии на кнопку, в текстовом поле текст менялся на нужный.
То есть, при нажатии на кнопку But1 в текстовом поле Textpole1, спустя 2 секунды, начали появляться слова, заранее записанные в переменные(
Slam1 = “…”
Slam2 = “…”
и т.д. ).
Ума не прилажу, как это осуществить…чтобы сначала к переменной дописывались цифры 1-10,
а после Textpole1 выводил текст в переменной +1, через 2 секунды текст в переменной +2....
вот :wacko:

CrazyFlasher
29.10.2007, 00:24
F1 и читать про setInterval

D12
29.10.2007, 02:13
System.useCodepage = true;
///Текстовое поле и его параметры///
var TEXT_BOX:Array = ["Привет", "Супер", "Гламур", "Круто", "Молодец"];
var height_mytext:Number = 14;
var width_mytext:Number = 60;
///
var time:Number = 0;
var text_next:Number = 0;
var fps:Number = 21;
///
createEmptyMovieClip("Text", 1);
with (Text) {
createTextField("mytext", 1, 0, 0, width_mytext, height_mytext+2);
myformat = new TextFormat();
myformat.size = 14;
myformat.color = 0x000000;
myformat.font = "Lucida Console";
mytext.selectable = false;
mytext.bold = false;
mytext.wordWrap = true;
mytext.text = TEXT_BOX[0];
mytext.setTextFormat(myformat);
}
Text._x = 275-(Text._width/2);
Text._y = 200;
///делаем кнопочку///
createEmptyMovieClip("bt", 2);
with (bt) {
lineStyle(1, 0x000000, 100);
beginFill(0x00CCFF, 100);
moveTo(-20, -10);
lineTo(20, -10);
lineTo(20, 10);
lineTo(-20, 10);
lineTo(-20, -10);
endFill();
}
bt._x = 275;
bt._y = 240;
///код для кнопачки///
bt.onPress = function() {
Text.onEnterFrame = function() {
time += 1;
if (time>=fps*2) {
time = 0;
text_next += 1;
}
if (text_next>=TEXT_BOX.length) {
text_next = 1;
}
with (this) {
myformat = new TextFormat();
myformat.size = 14;
myformat.color = 0x000000;
myformat.font = "Lucida Console";
mytext.selectable = false;
mytext.bold = false;
mytext.wordWrap = true;
mytext.text = TEXT_BOX[text_next];
mytext.setTextFormat(myformat);
}
};
};

годится ?

etc
29.10.2007, 02:14
D12, о боже, useCodepage!

D12
29.10.2007, 02:23
Daemon а что такого =)
забыл это когда подгружаешь текст нужна эта строчка :)
А можно вопрос ? в моем коде можно Object применять ?

DarkLight
29.10.2007, 02:34
Daemon а что такого =)
забыл это когда подгружаешь текст нужна эта строчка :)
utf8, только utf8....никакого true для useCodepage...

etc
29.10.2007, 09:52
D12, ты лучше скажи, какой сакральный смысл каждый раз при нажатии на кнопку определять onEnterFrame? И в каждом отрисованном кадре втыкать setTextFormat.

Toxedo
29.10.2007, 17:36
Мммм...а с setInterval нельзя никак?

Nirth
29.10.2007, 17:38
d12 я в шоке

with (this) {
myformat = new TextFormat();
myformat.size = 14;
myformat.color = 0x000000;
myformat.font = "Lucida Console";
mytext.selectable = false;
mytext.bold = false;
mytext.wordWrap = true;
mytext.text = TEXT_BOX[text_next];
mytext.setTextFormat(myformat);
}
Зачем это?

Ostgur
29.10.2007, 17:45
этож D12, он всегда оригинальный код пишет :D

D12
29.10.2007, 17:56
Вредины =)
Я бы поправил бестолковый- код :) но рабочий =)

Ostgur
29.10.2007, 18:08
отличный код, его гораздо полезнее читать, чем аналогичный с setInterval или setTimeout

D12
29.10.2007, 18:54
Так тоже ничего =)
Вот пожалуйста с setInterval :)

///Данные///
var TEXT_BOX:Array = ["Привет", "Супер", "Гламур", "Круто", "Молодец"];
var height_mytext:Number = 14;
var width_mytext:Number = 60;
var text_next:Number = 1;
var time:Number = 360;
///Делаем текстовое поле///
createEmptyMovieClip("Text", 1);
with (Text) {
createTextField("mytext", 1, 0, 0, width_mytext, height_mytext+2);
myformat = new TextFormat();
myformat.size = 14;
myformat.color = 0x000000;
myformat.font = "Lucida Console";
mytext.selectable = false;
mytext.bold = false;
mytext.wordWrap = true;
mytext.text = TEXT_BOX[0];
mytext.setTextFormat(myformat);
}
Text._x = 275-(width_mytext/2);
Text._y = 200;
///Делаем кнопку, прошу прощения но у меня почемуто неработает вложение на форуме посему все кодом///
createEmptyMovieClip("bt", 2);
with (bt) {
lineStyle(0.25, 0x000000);
beginFill(0x0099CC);
moveTo(-25, -12);
lineTo(-25, -12);
lineTo(25, -12);
lineTo(25, 12);
lineTo(-25, 12);
endFill();
}
bt._x = 270;
bt._y = 240;
///Команда для нашей кнопачки///
bt.onPress = function() {
function Play() {
(text_next<=TEXT_BOX.length-2) ? text_next += 1 : text_next=1;
Text.mytext.text = TEXT_BOX[text_next];
Text.mytext.setTextFormat(myformat);
}
setInterval(Play, time);
};

хотя мне "интерфрейм" больше нравится :)

Nirth
29.10.2007, 19:00
D12 расскажи, зачем использовать with(this) ?

Ostgur
29.10.2007, 19:02
у тебя там маленькая ошибочка была, исправил =)

///Данные///
var TEXT_BOX:Array = ["J...s", "die", "for", "our", "sins."];
var height_mytext:Number = 14;
var width_mytext:Number = 60;
var text_next:Number = 0;
var time:Number = 360;
///Делаем текстовое поле///
createEmptyMovieClip("Text", 1);
with (Text) {
createTextField("mytext", 1, 0, 0, width_mytext, height_mytext+2);
myformat = new TextFormat();
myformat.size = 14;
myformat.color = 0x000000;
myformat.font = "Lucida Console";
mytext.selectable = false;
mytext.bold = false;
mytext.wordWrap = true;
mytext.text = TEXT_BOX[0];
mytext.setTextFormat(myformat);
}
Text._x = 275-(width_mytext/2);
Text._y = 200;
///Делаем кнопку, прошу прощения но у меня почемуто неработает вложение на форуме посему все кодом///
createEmptyMovieClip("bt", 2);
with (bt) {
lineStyle(0.25, 0x000000);
beginFill(0x0099CC);
moveTo(-25, -12);
lineTo(-25, -12);
lineTo(25, -12);
lineTo(25, 12);
lineTo(-25, 12);
endFill();
}
bt._x = 270;
bt._y = 240;
///Команда для нашей кнопачки///
bt.onPress = function() {
function Play() {
(text_next<=TEXT_BOX.length-2) ? text_next += 1 : text_next=0;
Text.mytext.text = TEXT_BOX[text_next];
Text.mytext.setTextFormat(myformat);
}
setInterval(Play, time);
};

D12
29.10.2007, 19:05
Orange =)
Я это.... так пошутил :)

P.S. Целую всех в губки :)
хорош тредить =)

Nirth
29.10.2007, 19:19
Вобщем, вот мой вариант
var labels:Array = ["Привет", "Супер", "Гламур", "Круто", "Молодец"];
var interval_id:Number;

var changingText:TextField = createLabel(this, '');

var button:MovieClip = createButton(this, 'Click Me', 0xFF6600);
button._y = 24;
button.onRelease = onRelease;

function onRelease():Void
{
clearInterval(interval_id);
interval_id = setInterval(changeLabel, 500);
}

var currentIndex:Number = 0;
function changeLabel():Void
{
if(currentIndex >= labels.length) currentIndex = 0;

changingText.text = labels[currentIndex++];
}

function createLabel(parent:MovieClip, text:String):TextField
{
var txt:TextField = parent.createTextField('label_txt', 1, 0, 0, 0, 0);
txt.autoSize = true;
txt.text = text;
return txt;
}

function createButton(parent:MovieClip, label:String, color:Number):MovieClip
{
var mc:MovieClip = parent.createEmptyMovieClip('instance' + Math.random(), parent.getNextHighestDepth());
var txt:TextField = createLabel(mc, label);
txt._x = txt._y = 2;
mc.beginFill(color);
mc.moveTo(0, 0);
mc.lineTo(txt._width + 4, 0);
mc.lineTo(txt._width + 4, txt._height + 4);
mc.lineTo(0, txt._height + 4);
mc.lineTo(0, 0);
mc.endFill();
return mc;
}

D12
29.10.2007, 19:33
Ostgur
твой вариант :)

Ostgur
29.10.2007, 19:57
не хотел показывать, но раз просите, мой вариант без кнопки и с генерацией текста ;D

Toxedo
29.10.2007, 20:12
То что нужно))