Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.01.2007, 19:40
Slavik2003 вне форума Посмотреть профиль Отправить личное сообщение для Slavik2003 Найти все сообщения от Slavik2003
  № 1  
Ответить с цитированием
Slavik2003

Регистрация: Aug 2003
Сообщений: 90
По умолчанию Непростой вопрос о БЕГУЩЕЙ СТРОКЕ

Кто имеет желание помочь, пожалуйста помогите.

Делаю игру. Мне надо проделывать некие действия вместе с сообщениями в бегущей строке. Задавать когда именно проигрывать эти действия, я должен в самой бегущей строке.

ПРИМЕР
В бегущей строке есть символы 123456712345671234567 К 1234567 надо проиграть некий ролик за миг до того как буква "К" появится в бегущей строке. А саму букву из стринга удалить. Чтоб ее небыло видно в строке. Но в каждом последующем прокручивании бегущей строки в стринге заново должна быть буква К, и заново проигрывалось тоже действие, и эта буква небыла бы показана.
Надо учесть, что за один раз в строке может быть несколько букв "K", несколько раз надо проиграть один и тот-же ролик.

Код ниже, с исходника прикрепленного.
Сама бегущая строка.

Код:
stop();

str="<font face='Arial' color='#5B8DD7' size='17'><b>                                                            123456712345671234567 K 1234567</b>   </font>";

this.createEmptyMovieClip ("mcMaska", 0);
this.mcMaska.beginFill (0, 10);
this.mcMaska.lineTo (310, 0);
this.mcMaska.lineTo (0, 40);
this.mcMaska.lineTo (0, 40);
this.mcMaska.lineTo (0, 0);
this.mcMaska.endFill ();
//// создаем бегущую строку
this.createEmptyMovieClip ("mcText", 1);
this.mcText.createTextField ("txt1", 0, 0, 0, 100, 40);
this.mcText.createTextField ("txt2", 1, 0, 0, 100, 40);
this.mcText.txt1.autoSize = this.mcText.txt2.autoSize = true;
this.mcText.txt1.html = this.mcText.txt2.html = true;
this.mcText.txt1.htmlText = this.mcText.txt2.htmlText = str;
this.mcText.txt2._x = this.mcText.txt1._width;
this.mcText.setMask (this.mcMaska);


this.mcText.moveText = function () {
	this._x -= 2;
	if (this._x < -this.txt1._width) {
		this._x += this.txt1._width;
		
	}
	updateAfterEvent ();
};
setInterval(this.mcText, "moveText", 32);


onEnterFrame=null;

Вопрос, как это можно реализовать.
В исходнике уже есть ролик который надо проиграть. И сам код БГС.
Вложения
Тип файла: rar beg.rar (855 байт, 76 просмотров)
__________________
http://nostradamYs.ru

Старый 02.01.2007, 07:05
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 2  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
почитай про методы и свойства объекта String. Приложи исходник, а то в архиве такого не наблюдается.
Тебе не сравнить букву с буквой?


Последний раз редактировалось Kikasso; 02.01.2007 в 07:08.
Старый 02.01.2007, 15:31
Leezard вне форума Посмотреть профиль Отправить личное сообщение для Leezard Посетить домашнюю страницу Leezard Найти все сообщения от Leezard
  № 3  
Ответить с цитированием
Leezard
 
Аватар для Leezard

Регистрация: Oct 2004
Сообщений: 141
А не проще использовать конвейер и не придумывать шарманку на флэше?

Старый 02.01.2007, 15:41
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 4  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Ваще не понимаю тебя, дорогой Автор!
Если у тебя фиксированный набор символов, нафига работать со стрингом?
В любом случае, нужно строку анализировать по символьно - если знаешь как, то твой вопрос отпадает автоматически.

Старый 02.01.2007, 20:19
Slavik2003 вне форума Посмотреть профиль Отправить личное сообщение для Slavik2003 Найти все сообщения от Slavik2003
  № 5  
Ответить с цитированием
Slavik2003

Регистрация: Aug 2003
Сообщений: 90
Цитата:
Если у тебя фиксированный набор символов, нафига работать со стрингом?
Цитата:
А не проще использовать конвейер и не придумывать шарманку на флэше?
Там будет много стрингов подгружены.


Kikasso
Цитата:
почитай про методы и свойства объекта String. Приложи исходник, а то в архиве такого не наблюдается.
Тебе не сравнить букву с буквой?
Нужно проиграть ролик с кубиком, за миг до того как буква К появится.
Исходник прикрепил.
Вложения
Тип файла: rar beg.rar (4.8 Кб, 62 просмотров)
__________________
http://nostradamYs.ru


Последний раз редактировалось Slavik2003; 02.01.2007 в 20:24.
Старый 03.01.2007, 09:17
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 6  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Slavik, проще всего не двигать текстовое поле, а добавлять буковку по буковке, используя метод String.slice(help) и что-то вроде i++

Если хотите именно двигать тексовое поле, значит нужно как-то найти позицию нужного символа. Если текст моноширинный, это просто String.indexOf(help); . Если буквы разной ширины.. Ну добавьте в строку <img src="marker" id="marker" /> и в библиотеку мувиклип "marker", тогда найти его позицию можно будет textField['marker']._x

Старый 03.01.2007, 09:31
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 7  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
ну принцип такой
Код:
var str:String = "12345798347897K096856";
var txt:String = "";
var i:Number = 0;
function doSome(){
trace("K!");
}
function moveText(){
var currLetter:String = str.charAt(i++);
if(currLetter == "K"){
doSome();
}else{
txt = currLetter + txt;
textField.text = txt; 
}
}
это если просто текст. Если html по буковке его вставлять замучаешься, так что вставляйте невидимый маркер и определяйте его положение.


Последний раз редактировалось Kikasso; 03.01.2007 в 09:37.
Старый 04.01.2007, 13:31
Slavik2003 вне форума Посмотреть профиль Отправить личное сообщение для Slavik2003 Найти все сообщения от Slavik2003
  № 8  
Ответить с цитированием
Slavik2003

Регистрация: Aug 2003
Сообщений: 90
Kikasso
Я написал Личным Сообщением кое что Вам
__________________
http://nostradamYs.ru

Старый 04.01.2007, 22:46
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 9  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Спасибо, я заметил ))
Вот примерно такой механизм. Бьем строку по маркеру, поочередно загоняем куски строки в тестовое поле и определяя ширину этого поля получаем позицию маркера. Я поставил проверку на строгое совпадение, это конечно неправильно - там могут быть и дробные числа, и маркер я вставил всего один, но принцип должен быть ясен. Флеш 8 (сорри 6-ки нет).
У вас маркеров много, соответственно надо создать и массив положений маркеров, ввести переменную "текущий маркер" - индекс массива и сравнивать _x с иксом текущего маркера. Если _х перевалил за отсечку, текущим становится следующий маркер и сравнивать теперь надо с ним, а клипу играть.
Вложения
Тип файла: rar beg.rar (5.7 Кб, 50 просмотров)


Последний раз редактировалось Kikasso; 04.01.2007 в 23:06.
Старый 05.01.2007, 16:33
Slavik2003 вне форума Посмотреть профиль Отправить личное сообщение для Slavik2003 Найти все сообщения от Slavik2003
  № 10  
Ответить с цитированием
Slavik2003

Регистрация: Aug 2003
Сообщений: 90
Kikasso
Я пока не смог разобраться почему действие происходит в одном и том-же месте даже если менять место расположения маркера


Паралельно с твоим способом я ищу ответ на нижеописанный, если кто знает, поскольку твой способ потребует потом массу массивов для маркеров, и несколько десятков строк кода
Есть точка х
В Бегущую строку(бгс) добавлялись бы символы по одному
Бегущая строка проезжает точку х, и как тоько правый ее край будет на точке, добавить 1 символ. Этот символ расширит поле, и снова, как правый край наедет на точку, добавить символ.



Пока один вопрос, каким образом вычислить координату правого края поля бгс
.
.
.
__________________
http://nostradamYs.ru

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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