SWiSH Max файловете се определят като филми, тъй като анимациите в тях се раздвижват по времева линия, която се представя като кадри в секунда (fps - frames per second). Когато преглеждате филма възпроизвеждаща глава преминава по времевата линия (времедиаграма), освен в случаите в които движението й не се управлява от скрипт във филма.
В SWiSH Max кадрите в секунда (fps) се определят в табът Movie. Настройката по подразбиране е 12 fps. Стандартната скорост на движение във анимацията е 29.97 fps (времевият код на SMTPE) но той не е необходим за SWiSH Max филмите ви.
Целта на този урок е да помогне на потребителите на програмата да разберат по-добре функциите и полата от времевата линия на SWiSH Max. Ще научите, че основната ви времева линия винаги се именува _root в скрипта. С _parent се означава всеки съдържащ други материали спрайт (sprite), когато искате да насочите дадено действие към тях от дъщерен спрайт, тъй като всички ваши спрайтове (това, което в Adobe Flash се нарича филмов клип, Movie Clips) имат свои собствени времеви линии, към които можете да насочите дадено действие, зададено в скрипта ви, чрез упоменаване името на спрайта.
Нека си създадем нов филм и да видим как работи времевата линия с ефекти (effects events) и действия (actions).
Стартирайте SWISH Max. Изберете File | New, за да създадете нов филм. От лентата с инструменти Tools изберете текстовата икона Text (или с бутона T на клавиатурата). Кликнете и провлачете с този инструмент мишката по сцената така, че да създадете текстова кутия. Въведете произволен текст.
Проверете за следните неща в панела Text (от дясно на сцената):
Уверете се, че текста ви не е маркиран като цел (target).
Че е зададен като Vector или Vector (pixel-aligned) шрифт.
Че текста е статичен (static).
Ако погледнете в панела от ляво на самата времева линия ще видите, че тя (в момента) е разделена на два реда. Единия има означение "Сцена" (Scene), а другия е вашият току-що създаден текстов слой. Обекти и ефекти могат да се поставят и премахват във всеки кадър (frame) на времевата линия, така че да се появяват и изчезват по различно време.
Кликнете с десен бутон на който кадър пожелаете от линията на текста и изберете "Fade ->Fade In" от менюто. Това ще постави ефекта "Fade In" в кадъра, който сте избрали. Използвайте "File | Test in Player", за да прегледате действието на филма дотук и да видите какво представлява този ефект на плавно появяване. Текстът, който въведохте, трябва да се появи на мястото, където сте го поставили на сцената, в момента, в който възпроизвеждащата глава премине през кадъра, в който сте задали ефекта на появяване.
Кликнете в центъра на ефекта (наричан още sfx) и се опитайте да го преместите наляво и надясно по времевата му линия, за да промените момента, в който той ще се възпроизвежда. Забележете, че ако кликнете и провлачите последния кадър от ефекта (там има черна точка, означаваща ключов кадър, т.е. keyframe), това няма да премести местоположението му, а ще го скъси или удължи, т.е. ще го "сбие" или "разтегне" в по-малко или в повече кадри от зададените по подразбиране и така той ще продължава по-малко или повече време при възпроизвеждането на филма.
Изразено чрез скрипт естественото поведение на филма следва командата Play(). Ако няма нищо, което да го контролира, филмът ще се възпроизведе до края (краят, освен ако не определите друго, е последният кадър в който има някакво действие във времевата линия), след което ще се започне от начало (можете да видите това, като тествате току-що създаденият филм в плейър или в браузъра си - Ctrl+T или пък Ctr+Shift+T).
За да имаме повече контрол върху филма и действията в него, трябва да определим събития и да зададем действия.
SWiSH script е скриптов език, който използва т.нар. събития и действия, за да контролира хода на възпроизвеждащата глава, т.е. хода на възпроизвеждане на филма. Най-напред се задава събитие, а сетне спецификации на действието, което ще се осъществи в това събитие. Събитията могат да се назначат спрямо обект или спрямо самата времева линия. Типичният скрипт на събитие с последващо действие ще изглежда като кода, показан по-долу, и ще се намира в панела за скрипт (намиращ се в табът Script точно над прозореца на сцената):
on Event() { //Perform Action); } |
Кликнете над последния кадър на ефекта във времевата линия на сцената с десен бутон и изберете 'Movie control > Stop()'. Там сега трябва да има кадър с червено квадратче, представляващо действието. С кликване и преместване на квадратчето можете да определите по кое точно време да се извърши действието и в кой кадър да спре филма.
Тествайте в браузъра си, в плейър на флаш филми или пък в SWiSH Max, като кликнете на бутона за възпроизвеждане (play) в Control toolbar (ако го нямате изведен отидете в View | Toolbars и сложете отметка до Control toolbar). В панела за скриптове можете да определяте къде ще се осъществи ефект, както и броят кадри, които ще заема (т.е. времето за което ще се извършва).
Кодът за събитията на вашата сцена сега трябва да изглежда така (превключете от таба Layout: Scene_1 над вашата сцена на таба Script):
Ако сте в направляван режим (Guided mode) кликнете върху събитието (Event) и ще можете да зададете нова стойност за номера на кадъра. За следващия пример настройте кадъра така:
onFrame (1) { stop(); } |
Button Event/Actions
Any object (shape. text, image, sprite) can be used for button events. Switch back to the layout panel view to create a shape. Select the rectangle tool from the layout panel. Click and drag across the stage to create your shape. From the shape panel select a color and give the shape a line value.
With the shape selected, return to the Script panel nested behind the layout panel. Make sure that the guided mode is selected.
Add Script> Events > Button . On release()
Add Script Movie Control > gotoAndPlay > goto and play frame(2)
When complete your script should appear like this
in the Script panel.
on (release) { gotoSceneAndPlay("<current scene>",2); } |
Add another stop() action to your Scene timeline. where the animation ends
onFrame (16) { stop(); } |
When testing in browser/player or swishmax your movie should not present the fade in until your shape is clicked. When the shape is clicked again the fade in should occur again. Now that we have an understanding of how the timeline operates, and how to control the movie via SWiSH Script, it's time to expand on the concept with sprites. Here is a sample.swi which recaps what we have covered.
Sprites
Objects known as sprites in SWiSH Max are referred to as Movie Clips in flash or SWiSH Max2. They are "Mini Movies" within the scene, and they have semi-independent timelines relative to the Scene. The dependency is that the sprite must exist in the scene's timeline and a sprite can not extend beyond the scene's timeline (such as to the next scene).
In order for sprites and the movie to communicate we need to name our sprites. Every object that will be referenced in scripting needs a name. When an event action occurs in the sprite's timeline it will only affect the sprite's timeline, unless another target has been specified.
With your text object selected, go to the Modify
Menu
in the main menu and select Modify->Convert-Convert To
Sprite.
Now test your movie in SWiSH Max. You will notice the fade in occurs without clicking the button.
We need to:
Name the sprite.
Assign action events within the sprite.
Target the sprite from our button.
In the Sprite panel insert a name for your sprite. Sprite names should not be spaced or begin with a number, and should not be named "Sprite"
Tip: You don't need to manually add scripts if you are just duplicating them. You can copy a script and then paste it into a different location. You can also copy Script from text such as this, or any, tutorial and paste the script in.
From the Scene Script Panel right click on the frame event, and select Copy. Next, double click on the Sprite in the Scene Outline to open the Sprite's timeline. Right click on the Sprite timeline and select Paste Script.
Your Sprite timeline script should look something like this:
onFrame (1) { stop(); } onFrame (15) { stop(); } |
Targeting the sprite timeline from the scene timeline.
Our button still points to the timeline it resides in. Select your shape from the scene timeline. In your script panel, select the Action. From the 'Target' drop-down menu, select the Sprite name.
Dot Notation
(Or how to target different timelines in your movie)
on (release) { MySprite1.gotoAndPlay(2); } |
The main timeline in a movie is referred to as _root. If you have a button in a sprite that acts on a target in the main timeline, you would need to use _root as the target.
Each sprite has it's own timeline, and sprites can also have Child sprites (and they in turn have their own timeline). Dot notation is the way to target those different timelines. If the communication is to the child sprite within the _root you need to identify the path to that sprite.
on (release) { MySprite1.MyChildSpriteName.gotoAndPlay(2); } |
If the Child sprite is targeting it's parent sprite:
on (release) { _parent.gotoAndPlay(2); } |
If any sprite is targeting the _root:
on (release) { _root.gotoAndPlay(2); } |
If a sprite is targeting it's sibling sprite _root:
on (release) { _parent.MySiblingSpriteName.gotoAndPlay(2); } |
Hopefully, this helps new users to better understand the use of timelines in a SWiSH Max movie. You should have learnt that the main timeline is always called _root in your scripting. That _parent is the way to name any particular container sprite if you are targeting it from the child sprite, and that your sprites (Movie Clips) have their own individual timelines, which can all be targeted by using the names of the sprites in your scripts using dot notation.