Форум » Скрипты (Script) » вопрос по скрипту движения текста » Ответить

вопрос по скрипту движения текста

gambit: товарищи, в процессе работы над адвенчурой выявилась проблемка. а именно, как задать параметры ограничения движению текста? ( в титрах игры) чтобы текст, появлялся в районе зелёной полосы, и исчезал в районе красной, двигаясь равномерно вверх., а не с нижней части экрана в верхнюю. собсна сам скрипт взят из титров демо примера wme [quote]#include "scripts\base.inc" actor.Active = false; var CurrY = 403; var Win = Game.CreateWindow(); Win.X = 360; Win.Y = 405; Win.Width = 0; Win.Height = 0; Win.AttachScript("scenes\credits\scr\window.script"); CurrY = 0; AddText(""); AddText(""); AddText("*****", true); AddText("***"); AddText(""); AddText("***"); AddText(""); AddText("***********", true); AddText("*******"); AddText(""); AddText(""); AddText("Powered by Wintermute Engine", true); AddText("Copyright (c) бла бла бла"); AddText(""); Win.Exclusive = true; while(Win.Y > -CurrY) { Win.Y = Win.Y - 3; Sleep(50); } if(Win!=null) { Win.Close(); Game.UnloadObject(Win); Game.ChangeScene("scenes\Menu\Menu.scene"); } //////////////////////////////////////////////////////////////////////////////// function AddText(Text, Hilight) { if(Hilight==null) Hilight = false; var Static = Win.CreateStatic(); if(Text==null) Static.Text = ""; else Static.Text = Text; Static.X = 0; Static.Y = CurrY; Static.Width = Game.ScreenWidth; Static.Height = 32; Static.TextAlign = TAL_CENTER; if(Hilight) Static.SetFont("fonts\big_blue.font"); else Static.SetFont("fonts\big_white.font"); CurrY = CurrY + Static.Height; Win.Height = Win.Height + Static.Height; } [/quote] заранее спасибо

Ответов - 7

Pipec: while(Win.Y > -CurrY) { Win.Y = Win.Y - 3; Sleep(50); } Эта часть скрипта перемещает окно с титрами по экрану, а тебе нужно переписать это место так, чтобы перемещать по экрану только объекты Static, которые создаются функцией AddText внутри окна. Окно должно быть жестко привязано к экрану телевизора

gambit: хммм. спасибо. имхо, мне, как нубу проще сделать спрат с прозрачным фоном и текстом, и задать ему движение от точки появления до точки исчезания ))

Pipec: Да, в твоей ситуации использовать шаблон из wme demo будет сложновато, надо многое переделывать. Проще все сделать с нуля.


gambit: теперь совсем уже по части глупости зашкаливающий вопрос: допустим добавляем в сцену sprite entity, задаём ему скрипт #include "scripts\base.inc" // while(this.Y > -1024) { this.Y = this.Y -2; Sleep(40); } Game.ChangeScene("scenes/Menu/Menu.scene"); чтоб от низа экрана в верх шёл, но какие именно нужно указать значения в коде, чтобы спрайт появлялся в точке 604 по оси Y, двигался вверх до точки 401, и после исчезал? плиз, хелп, т.к. как уже говорил, в скриптах нуб, а из-за этой сцены демку самой игры в сеть не выбросить =(

Pipec: теперь совсем уже по части глупости зашкаливающий ответ: Сделай анимированный спрайт с ползущими вверх титрами

gambit: если анимация достаточно плавная, то весить сие должно соответствующе. а учитывая кличество анимированных спрайтов в рассчёте на 1 сцену, даже демка будет весить как минимум метров 50, с учётом оптимизации.

Pipec: Набираешь в фотошопе титры в длинную колбасу и сохраняешь их, например в jpg или png. Потом создаешь окно по размерам твоего телевизора. Ставишь параметр ClipContents в true (!ОБЯЗАТЕЛЬНО!). В окно добавляешь Static control, на фон которого ложишь свою колбасу. Опускаешь объект Static ниже нижней кромки окна. В скрипте получаешь доступ к этому объекту win = Game.LoadWindow("путь к файлу окна"); tmp = win.GetControl("объект static"); А потом, изменяя значение tmp.Y крутишь свой цикл Не забудь удалить объект окна из памяти перед сменой сцены



полная версия страницы