Вход

Просмотр полной версии : Бегущая строка со звездами...


KVAZARD
09.04.2007, 02:23
Друзья!
Вообще я не мега-флэшер. Возникла проблема , а дело очень срочное.
Нужно сделать бегущую строку средствами флэш.
Строка очень большая.(прикрепил файл)
Плюс между каждым ФИО должна быть звёздочка. Ну, обычная такая, с ней нет проблем.
Расскажу, как я пытался это сделать:
1 способ - просто создал динамик текст со всем списком в одну строчку
и звёздочки натыкал вручную. Сделал обычный моушен - тормозит ужасно.:wacko:
2 способ - разбил текст на небольшие куски, и в каждом отдельном кадре акшенскриптом (this._x -=1) их двигал подгружая новую переходом на след. Кадр. Тормозит не чуть не хуже.!!!
ПРИЧЕМ только когда мульт уже вставлен в html. В плеере всё ок!

Сам я вижу решение проблемы в подгрузке из файла html -этой строки.(т.е. вся строка уже целиком со звездами) И прогон в динамик тексте акшен скриптом.

Это приблизительно то что я написал::rtfm:
-----
my_string = new XML();
my_string.load('string.html');
my_string.ignoreWhite = true;
my_string.onLoad = test;
function test() {
string = my_xml.firstChild.firstChild.nodeValue;

}
Потом в динамик текст и…

running_str.run = function(){
this.text = this.text.substr(1) + this.text.substr(0,1);
}
tid = setInterval(running_str, "run", 50);
-----
Но у меня в силу слабого владения последним это не получилось. Звёзды – превращаются в одну и болтаются гдето непойми где… :confused:

iNils
09.04.2007, 02:25
1. Для оформления своего кода, надо использовать теги .
2. Для вопросов связанных с программированием, есть раздел ActionScript для Начинающих

KVAZARD
09.04.2007, 03:36
Да у меня тут не программировние даже. Просто дёргается мувик... и это не красиво. если бы какой другой элемент может и незаметно , а бегущая строка это очень видно. и моушен анимация и экшен скрипт дают одинаковый результат - неуд. что ж делать то?
на странице ещё две флэхи - одна большая с фейрверком и спецэффектами. заметил ,что когда её убираю то строка тормозит меньше. но это не может быть из-за мощности компьютера, у меня машина за 3500$. тут дело во флэш.

iNils
09.04.2007, 04:23
А так тормозит?

KVAZARD
09.04.2007, 05:27
круто . именно то о чем я думал...
но вот исходник у меня сглючил. я в нём ничего не менял, только Ctrl+Enter нажал - звезды есть,а текста нет. странно. прикрепил.
и вставил в хтмл - тормозит. но я уже догадываюсь почему. он тормозит ровно на взрыв салюта.(там салют;) )
уфф... аццкая ночь.


да. проверил. тормозит из-за шапки сайта. и дело даже не в салюте.там просто перебор - буду чистиь.

и ещё... а можно скрипт проврить, сглючил, а ведь то что надо. я бы неделю такой писал :)

Kikasso
09.04.2007, 06:01
Поковыряйся с текстовым полем справа от звездочки (в библиотеке), надо в него включить очертания букв.
Только не включай все, включи английские, цифры и "абвгдежзик...АБВГДЕЖЗИК....." , то есть только те что нужны.
Со скриптом все нормально.

2 iNils: вы включили диапазон "Russian", кастомный?

upd: вот все русские. копи-пасте их.
абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

KVAZARD
09.04.2007, 06:09
спасибо. помогло. всем респект.

млин. вот я ламо всётаки. я щас вот пытаюсь её растянуть. и буквы тоже растягиваются. я это в коде вижу, но как исправить незнаю.
и цвет фона поменять немогу. там надо чёрный.
----------------------------------------------
ага, всё - с цветом разрулил.
с остальным тоже думаю разберусь...:yahoo:

iNils
09.04.2007, 15:50
2 iNils: вы включили диапазон "Russian", кастомный?Кастомный, там 214 символов, и русские и латинские. Но посколько он у меня был первым в списке, то у других должен выбираться диапазон All

Kikasso
09.04.2007, 16:10
Странно, у меня не выбралось ничего. У меня он последним стоит.
А "russLetters.txt" - на рабочем столе))

iNils
09.04.2007, 16:15
Странно, у меня не выбралось ничего. У меня он последним стоит.
А "russLetters.txt" - на рабочем столе))
Мда, надо бы кастомные наборы в fla включать, а то действительно бред выходит.

etc
09.04.2007, 20:39
iNils, скинь свой UnicodeTable.
Хотя я не знаю, в проектах обычно ставится весь Cyrillic.

iNils
09.04.2007, 20:59
iNils, скинь свой UnicodeTable.
Хотя я не знаю, в проектах обычно ставится весь Cyrillic.В моем наборе 214 символов (они все в комментах видны), а Cyrillic содержит 499 (в большей части бесполезные)

etc
09.04.2007, 21:01
Тут тонкий момент, что проект может быть отдан кому-нибудь, у кого нет это таблицы.

iNils
09.04.2007, 21:02
Тут тонкий момент, что проект может быть отдан кому-нибудь, у кого нет это таблицы.
Я в таких случаях прикладываю xml и пишу сопроводительный текст.

aksios
10.04.2007, 21:59
iNils,а тебе не известны способы как обеспечить плавную прокрутку?
Я знаю как сделать, чтоб буквы двигались плавно, тока при этом, если шрифт достаточно крупный, все равно возникают дополнительные дефекты - типа пропуска строк. На большом экране как то не очень, да и проц грузиться по полной.

iNils
11.04.2007, 02:03
Со скроллом больших букв не сталкивался.

KVAZARD
17.04.2007, 01:13
www.kvazard.fatal.ru - туда всё залил
бегущая строка там сильно дергается?
у меня ровно идет. но некоторые граждане(назовем их так) , утверждают что строка идет рывками.
кто как видит?

__Bender
17.04.2007, 01:54
А чего при движке мышки, строка рывками идет??

DanQuimby
17.04.2007, 02:24
Я думал что у тя что то тормозит.Но тут просто не правильная концепция вообще
скрола как такового.
Я попробую сегодня ночью сделать по другому скрол. И посмотрю так же будет у меня
он тормозить.

__Bender
17.04.2007, 02:29
Ой, не надо мне советовать, что надо делать. Я давно не новичек во Флеше.. так что ты займись оптимизацией, ведь должен твой проэкт быть расчитан на разную производительность компъютэров. Но мой комп. довольно силен.. хотя бы ОП-1024МВ

DanQuimby
17.04.2007, 03:00
__Bender не повериш у меня тоже не хлипкий , рабочая "лошадка"
и тормозит.
Но щас перерыл многие "буржуйские" порталы и то что они предлогали
один хрен тормозят . Задумлся ... а может быть как нить "извернуться"
и просто попытаться сделать без скролла горизонтального.
На то она и фантазия что бы над ней изгаляться :)

__Bender
17.04.2007, 03:50
а ты програмнно пишешь или вручную через Motion Tween в кадре, а?

KVAZARD
17.04.2007, 04:10
мне сам код написал iNils. я в ActionScript вообще ламо.
я прицеплю исходник. не может быть,чтобы это нельзя было реализовать средствами Macromedia Flash. темболее версия уже 8. не молодой проект то.:D ну я незнаю. у меня машина зверь, поэтому ничего не тормозит.
но вот как видите я в этом смысле одинок.
главное чтобы у посетителей не висло...
а без скролла уже нельзя - макет утвержденный.

__Bender
17.04.2007, 10:58
А может лучше так?

function init () {
mcRun.setMask(mcMaska)
arrayRun = new Array ();
arrayName = lv.name.split (" ");
setInterval(this, "run", 5);
// this.onEnterFrame = run; вообще удалить зачем повторный вызов?
}

KVAZARD
17.04.2007, 13:04
А может лучше так?

я незаметил разницы. но может и лучше.

Kikasso
17.04.2007, 13:24
А может лучше так?
Что, 200 раз в секунду? А монитор сколько раз в секунду моргает?

function init () {
mcRun.setMask(mcMaska)
arrayRun = new Array ();
arrayName = lv.name.split (" ");
setInterval(this, "run", 25);
}

40 по уши хватит.

etc
17.04.2007, 13:37
И чем вам onEnterFrame не угодил?

KVAZARD
17.04.2007, 13:39
попробовал 25. с 5-ю лучше едет.
25 - вообще дергается и залипть начало.

И чем вам onEnterFrame не угодил?

вот мне лично он ничего плохого не сделал.
но знающие люди говорят, что он процессор сильно грузит.

etc
17.04.2007, 14:02
но знающие люди говорят, что он процессор сильно грузит.
Кто сказал эту чушь? По-вашему, интервал, типа, меньше грузит?

Kikasso
17.04.2007, 14:27
Там просто накосячено, и onEnterFrame не срабатывает.
import mx.utils.Delegate;
var cx:Number = 0;
var arrayName:Array = null;
var arrayRun:Array = null;
var lv:LoadVars = new LoadVars ();
lv.onLoad = Delegate.create (this, init);
lv.load ("text.txt");
function init () {
mcRun.setMask(mcMaska)
arrayRun = new Array ();
arrayName = lv.name.split (" ");
_root.onEnterFrame = function(){ this.run(1.5); }
}
function run (dx:Number) {
if (arrayRun.length == 0 || arrayRun[arrayRun.length - 1]._width + arrayRun[arrayRun.length - 1]._x +10<mcMaska._width ) {
var depth:Number = mcRun.getNextHighestDepth ();
var mc:MovieClip = mcRun.attachMovie ("libStar", "mc" + depth, depth, {_x:mcMaska._width});
mc.txt.autoSize = true;
mc.txt.text = arrayName[cx];
arrayRun.push (mc);
cx++;
if (cx == arrayName.length) {
cx = 0;
}
}
if (arrayRun[0]._x < -arrayRun[0]._width-350) {
var mc:MovieClip = MovieClip (arrayRun.shift ());
mc.unloadMovie ();
}
for (var i:Number = 0; i < arrayRun.length; i++) {
arrayRun[i]._x -= dx;
}
}
То, что выделено красным - скорость прокрутки. fps поставь 31.
init прикручено к LoadVars - откуда там возьмутся кадры?

etc
17.04.2007, 14:33
Там просто накосячено, и onEnterFrame не срабатывает.
Значит надо переписывать. С нуля.
Я совершенно не понимаю, зачем делать бегущую строку с частотой выше fps, надеясь на плавность движения, если конечно не применять updateAfterEvent. Но я вообще смысла в интервалах, сравнимых по частоте с fps не вижу.

KVAZARD
17.04.2007, 16:18
вот. с параметрами поиграл. всё нормально стало вроде.

iNils
17.04.2007, 18:35
Но я вообще смысла в интервалах, сравнимых по частоте с fps не вижу.Для вызова не визуальных функций.
А строка тормозила из-за слишком большого фпс, Кстати в в 8-ке можне использовать cacheAsBitmap

KVAZARD
17.04.2007, 20:30
А строка тормозила из-за слишком большого фпс, Кстати в в 8-ке можне использовать cacheAsBitmap

но с маленьким кол-вом фпс ваще всё жестко дергается.
а что это за функция ,cacheAsBitmap?

__Bender
17.04.2007, 20:36
KVAZARD
F1

etc
17.04.2007, 21:53
Для вызова не визуальных функций.
А строка тормозила из-за слишком большого фпс, Кстати в в 8-ке можне использовать cacheAsBitmap
Ну про невизуальные понятно, да. Я подразумевал визуальные.

iNils
18.04.2007, 00:33
Ну про невизуальные понятно, да. Я подразумевал визуальные.А я для тех написал, кто не понял, что ты подразумевал :D Когда читают такое утверждение, без описания ньюансов, то проецируют на все, а потом рождается мнение, что "onEnterFrame ест много ресурсов"

KVAZARD
18.04.2007, 12:55
Предлагаю решить эту проблему за лавэ. (см. Вакансии)
Есть желающие?

etc
18.04.2007, 13:14
Для этого есть раздел вакансий.

TankMan
22.06.2008, 16:01
Я тут скачал RUN_STRING2 - и он почему то у меня не открывается - наверное версия старая... есть у кого-нибудь под Flash MX 2004 этот пример?