Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Adobe Flash. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Ρ€ΠΊΠ°Π΄, Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΎΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ³Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ActionScriptΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 23

Автор Гэри Π ΠΎΠ·Π΅Π½Ρ†Π²Π΅ΠΉΠ³

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ n провСряСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части выраТСния if.then. Π’ случаС совпадСния ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° colorTransform измСняСтся. ПослС окончания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, сама пСрСмСнная n мСняСт своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅.

Полная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставляСт собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠ»ΠΈΠΏ ActionScript с функциями onClipEvent(load) ΠΈ onClipEvent(enterFrame). ΠŸΠ΅Ρ€Π²Π°Ρ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ†Π²Π΅Ρ‚Π° ΠΈ прСобразования, вторая выполняСт постСпСнноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠ².

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ сдСлаСм Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΈΠΏ Π²Ρ€Π°ΡˆΠ°Π»ΡΡ. Π’Ρ€Π°ΡˆΠ΅Π½ΠΈΠ΅ достигаСтся постСпСнным ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° _rotation.

onClipEvent(load) {

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ†Π²Π΅Ρ‚Π° ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ трансформации.

spiralColor = new Color(this);

colorTransform = {rb:255, bb:255, gb:255};

// Π’Π½Π°Ρ‡Π°Π»Π΅ n Ρ€Π°Π²Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅.

n = 1;

}

onClipEvent(enterFrame) {

// ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

if (n == 1) {

colorTransform.rb -= 5;

if (colorTransform.rb == 0) n = 2;

} else if (n == 2) {

colorTransform.bb -= 5;

if (colorTransform. bb == 0) n = 3;

} else if (n == 3) {

colorTransform.rb += 5;

if (colorTransform. rb == 255) n = 4;

} else if (n == 4) {

colorTransform.gb -= 5;

if (colorTransform. gb == 0) n = 5;

} else if (n == 5) {

colorTransform.bb += 5;

if (colorTransform.bb == 255) n = 6;

} else if (n == 6) {

colorTransform.gb += 5;

if (colorTransform. gb == 255) n = 1;

}

// Π—Π°Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚.

spiralColor.setTransform(colorTransform);

// Π’Ρ€Π°Ρ‰Π°Π΅ΠΌ ΡΠΏΠΈΡ€Π°Π»ΡŒ.

this._rotation += 5;

}...

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ this ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠΏΠ° ΠΊ самому сСбС. Π’Π°ΠΊ ΠΊΠ°ΠΊ сцСнарий Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΊΠ»ΠΈΠΏΡƒ, использованиС this Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ послС this, относится ΠΊ самому ΠΊΠ»ΠΈΠΏΡƒ, Π° Π½Π΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠΏΡƒ ΠΈΠ»ΠΈ Ρ€ΠΎΠ»ΠΈΠΊΡƒ.

...

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠ»ΠΈΠΏΠ° _rotation ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΊΠ»ΠΈΠΏΠ° Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство градусов. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния. Если Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС 360Β°, Flash автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ значСния 370Β° ΠΊΠ»ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ Π½Π° 10Β°.

На рис. 5.4 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ€ΠΎΠ»ΠΈΠΊΠ° Spiral.fla.

Рисунок 5.4. Π‘ΠΏΠΈΡ€Π°Π»ΡŒ измСняСт Ρ†Π²Π΅Ρ‚ ΠΈ вращаСтся

Π₯отя этот ΠΆΠ΅ эффСкт ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ срСдствами классичСской Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ActionScript позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

К свСдСнию

Частота смСны ΠΊΠ°Π΄Ρ€ΠΎΠ² Ρ€ΠΎΠ»ΠΈΠΊΠ° опрСдСляСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Ρ€Π°ΡˆΠ΅Π½ΠΈΡ спирали ΠΈ смСны Ρ†Π²Π΅Ρ‚ΠΎΠ². Максимальная частота Π²ΠΎ Flash 8 – 120 ΠΊΠ°Π΄Ρ€/с. Однако слСдуСт ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ частота смСны ΠΊΠ°Π΄Ρ€ΠΎΠ² Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ быстродСйствия ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности

ИзмСнив ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ += Π½Π° β€”= Π² послСднСй строкС ΠΊΠΎΠ΄Π°, Π²Ρ‹ заставитС ΡΠΏΠΈΡ€Π°Π»ΡŒ Π²Ρ€Π°ΡˆΠ°Ρ‚ΡŒΡΡ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ смСны Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² значСния красной, Π·Π΅Π»Π΅Π½ΠΎΠΉ ΠΈ синСй ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡˆΠΈΡ….

Π‘Π»ΡƒΡ‡Π°ΠΉΠ½ΠΎΡΡ‚ΡŒ ΠΈ эффСкт старого ΠΊΠΈΠ½ΠΎ

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹: Randomlocation.fla, Randommovement.fla, Oldfilm.fla

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Flash ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² качСствС инструмСнта Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΡ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… эффСктов, Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· анимация Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. ActionScript ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Ρ‹Π±ΠΎΡ€Π° случайных чисСл, благодаря Ρ‡Π΅ΠΌΡƒ Π² содСрТаниС Ρ€ΠΎΠ»ΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ элСмСнт Π½Π΅ΠΊΠΎΠΉ нСпрСдсказуСмости.

Π—Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π—Π°Π΄Π°Ρ‡Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° – Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ случайныС числа для создания Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… эффСктов. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ «эффСкт старого ΠΊΠΈΠ½ΠΎΒ», ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ΅-Π³Π΄Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Ρ‹ ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄

Π’ΠΎ Flash MX ΡΡƒΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π΄Π²Π° способа гСнСрирования случайных чисСл. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ – Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Random, которая Π±Ρ‹Π»Π° Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚Π° функция Π²Ρ‹Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ значСния, Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшСго, Ρ‡Π΅ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, функция Random(5) выдаст Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 0 Π΄ΠΎ 4.

Π’ΠΎ Flash MX появилась функция Math.random(). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях Flash Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Random ΡƒΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Ѐункция Math.random() Π²Ρ‹Π΄Π°Π΅Ρ‚ число с плаваюшСй запятой ΠΎΡ‚ 0,0 Π΄ΠΎ 1,0.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [0..1], Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Math.Random() ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ число. НапримСр, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π½Π° 500 даст Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0,0 Π΄ΠΎ 500,0. Ѐункция int округляСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ сторону. ИспользованиС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² нашСм случаС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 499. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

n = int(Math.random()*500);

Π‘Π»Π΅Π΄ΡƒΡŽΡˆΠ°Ρ короткая функция ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΊΠ»ΠΈΠΏ Π² случайноС мСсто экрана, имСюшСго Ρ€Π°Π·ΠΌΠ΅Ρ€ 550x400.

onClipEvent(load) {

this._x = Math.random()*550;

this._y = Math.random()*400;

}

ИспользованиС Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ дСмонстрируСтся Π² Ρ€ΠΎΠ»ΠΈΠΊΠ΅ Randomlocation.fla, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅ΡˆΠ΅Π½ Π½Π° Web-сайтС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠ½ΠΈΠ³ΠΈ. ЗапуститС Ρ„Π°ΠΉΠ» нСсколько Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ€ΠΎΠ»ΠΈΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто экрана.

Π‘Π»Π΅Π΄ΡƒΡŽΡˆΠΈΠΌ шагом являСтся созданиС случайных чисСл ΠΈ ΠΈΡ… использованиС для пСриодичности внСсСния хаотичности Π² Ρ€ΠΎΠ»ΠΈΠΊ.

НиТСпривСдСнный сцСнарий ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΊΠ»ΠΈΠΏ Π² случайном Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ dx ΠΈ dy ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ значСния Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΎΡ‚ -5 Π΄ΠΎ 5 ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ измСнСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠ»ΠΈΠΏΠ° _x ΠΈ _y соотвСтствСнно (фактичСски dx ΠΈ dy ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠΏΠ°). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ dx ΠΈ dy ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ свои значСния Π² случайныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

onClipEvent(load) {

dx = Math.random()*10-5;

dy = Math.random()*10-5;

}

onClipEvent(enterFrame) {

this._x += dx;

this._y += dy;

if (Math.random() > .9) {

dx = Math.random()*10-5;

dy = Math.random()*10-5;

}

}

ДСйствиС этого сцСнария дСмонстрируСтся Π² Ρ€ΠΎΠ»ΠΈΠΊΠ΅ Randommovement.fla. Эллипс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠΎ экрану случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Он Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ поля, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ€ΠΎΠ»ΠΈΠΊΠ°

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования случайных чисСл создадим ΠΎΠ΄ΠΈΠ½ ΠΈΠ· популярных Flash-эффСктов: сымитируСм ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΊΠΈΠ½ΠΎΠΏΠ»Π΅Π½ΠΊΡƒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ эффСкт достигаСтся срСдствами Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Аниматор ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ нСбольшиС Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ Ρ‚Ρ€Π΅ΡˆΠΈΠ½ΠΊΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ Ρ€ΠΎΠ»ΠΈΠΊΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ линию, ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΡΡˆΡƒΡŽ вдоль Ρ€ΠΎΠ»ΠΈΠΊΠ° ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡˆΡƒΡŽ Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Ρƒ Π½Π° ΠΏΠ»Π΅Π½ΠΊΠ΅.

ВсС эти эффСкты Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² ActionScript. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, помСстив вдоль ΠΎΠ΄Π½ΠΎΠΉ стороны Ρ€ΠΎΠ»ΠΈΠΊΠ° Π±Π΅Π»ΡƒΡŽ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ линию.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ знания ΠΎ случайных числах, Π²Π°ΠΌ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ исходноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Ρ‹ ΠΈ пятна.

На рис. 5.5 ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ исходного Ρ€ΠΎΠ»ΠΈΠΊΠ°. Π’ этом Ρ€ΠΎΠ»ΠΈΠΊΠ΅ ΠΏΡ€ΠΎΠΏΠ΅Π»Π»Π΅Ρ€ самолСта Π²Ρ€Π°ΡˆΠ°Π΅Ρ‚ΡΡ, Π° лиса ΠΌΠΎΡ€Π³Π°Π΅Ρ‚. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ваш Ρ€ΠΎΠ»ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ большС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

Рисунок 5.5 . ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ€ΠΎΠ»ΠΈΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ случайныС пятна ΠΈ Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Ρ‹ для создания эффСкта старого ΠΊΠΈΠ½ΠΎ

Помимо Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния Π²Π°ΠΌ понадобятся ΠΊΠ»ΠΈΠΏΡ‹ пятСн ΠΈ Ρ†Π°Ρ€Π°ΠΏΠΈΠ½ для Ρ€Π°Π·ΠΌΠ΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… Ρ€ΠΎΠ»ΠΈΠΊΠ°. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Oldfilm.fla Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Π° прСдставляСт собой ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ линию Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»ΠΈΠΏΠ°. ΠŸΡΡ‚Π½ΠΎ – это нСбольшой ΠΎΠ²Π°Π» Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠΏΠ°.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°

Π‘Π½Π°Ρ‡Π°Π»Π° напишСм ΠΊΠΎΠ΄ для Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Ρ‹. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ копию ΠΊΠ»ΠΈΠΏΠ° Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Ρ‹ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ ΠΏΠΎΠ»Π΅ ΠΈ Π½Π°Π·Π½Π°Ρ‡ΡŒΡ‚Π΅ Π΅ΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сцСнарий:

onClipEvent(load) {

wanderAmount = 300;

leftLimit = 10; rightLimit = 540;

chanceOfJump = 50;

xPosition = 275;

speed = 10;

chanceOfChange = 0;

}

onClipEvent(enterFrame) {

xPosition += speed;

this._x = xPosition;

chanceOfChange++;

if ((Math.random()*wanderAmount < chanceOfChange or

(xPosition < leftLimit) or (xPosition > rightLimit)) {

speed = -speed;

chanceOfChange = 0;

}

if (Math.random()*chanceOfJump == 1) {

xPosition = Math.random()*(rightLimit-leftLimit)+leftLimit;

}

}...

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΈ вычислСнии Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с числами Flash ΠΎΡΡƒΡˆΠ΅ΡΡ‚Π²Π»ΡΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС: ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ слоТСниСм ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, 2x3+4 Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 10. Для измСнСния порядка выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скобки. НапримСр, 2x(3+4) Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 14.

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ сцСнария Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ leftLimit ΠΈ rightLimit ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ. Код Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π΅ΠΉ Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ speed опрСдСляСт, насколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ΡΡ линия Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ измСнСния Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΊΠ°Π΄Ρ€Π° Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ позиция, xPosition, ΠΊΠ»ΠΈΠΏΠ° измСняСтся с помошью ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ speed. Она Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠΏΠ° Π½Π° 10 пиксСлов Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ chanceOfChange увСличиваСтся ΠΈ опрСдСляСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ измСнСния. Π’ случаС, Ссли пСрСмСнная Ρ€Π°Π²Π½Π° 1, ΡΡƒΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ шанс ΠΈΠ· 300 (ΠΎΠΊΠΎΠ»ΠΎ 0,33 %), Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. К Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° пСрСмСнная chanceOfChange ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 150, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ измСнСния составит 150 ΠΈΠ· 300 ΠΈΠ»ΠΈ 50 %. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ управлСния ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ событиСм, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΎ происходит Π½Π΅ слишком часто ΠΈ Π½Π΅ слишком Ρ€Π΅Π΄ΠΊΠΎ. Π‘ помошью ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ chanceOfChange создаСтся иллюзия случайности.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС "ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅" ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ смСну направлСния. Оно ΠΎΡΡƒΡˆΠ΅ΡΡ‚Π²Π»ΡΠ΅Ρ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ измСнСния ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ speed Π½Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. ИзмСнСниС Ρ‚Π°ΠΊΠΆΠ΅ происходит, Ссли линия достигаСт ΠΏΡ€Π°Π²ΠΎΠΉ ΠΈΠ»ΠΈ Π»Π΅Π²ΠΎΠΉ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ измСнСния опрСдСляСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ chanceOfJump ΠΈ прСдставляСт собой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ Π² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто. ΠΠ°ΡΡ‚ΠΎΡΡˆΠΈΠ΅ Ρ†Π°Ρ€Π°ΠΏΠΈΠ½Ρ‹ Π½Π° ΠΏΠ»Π΅Π½ΠΊΠ΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах, ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΠΈΠΊ Π±ΠΎΠ»Π΅Π΅ рСалистичным.