Särskilda textblock. Macromedia Flash MX - första stegen


Föreläsningsmaterial, läxor och prov
distanskurs "Elektronisk skola Macromedia Flash MX"
Rysk veckotidning för datavetenskapslärare. Förlaget "Första september" nr 42 (2003)
"En analog till programmet "Rule" från paketet "Hits of Robotland".
i Macromedia Flash-miljön."

Tryckta publikationer

ELECTRONIC SCHOOL MACROMEDIA FLASH MX
III-kurs: Grunderna i programmering i Macromedia Flash MX
Modul IV: Med kommando. Program "Regel"
ActionScript-språk

Expressmodulplan:
  • med kommando
  • Flash duplikat av "Rule"-programmet från "Hits of Robotland"-paketet.

med kommando

När man använder objekt i programkod (script) är det lätt att märka att även i ett litet skriptblock upprepas namnet på samma objekt upprepade gånger. Sådana upprepningar förekommer särskilt ofta när man använder vissa enskilda föremål, till exempel föremål Matematik, tillhörande det övre planet. Till exempel är följande kod ganska vanlig:

A = Math.PI * r * r; x = r * Math.cos(Math.PI); y = r * Math.sin(Math.PI/2);

Här är föremålet Matematik förekommer upprepade gånger, vilket gör manuset svårt att förstå. Denna post kan förenklas avsevärt om skriptblocket är omgivet av parenteser med hjälp av kommandot with. Sedan, inom detta skriptblock, kommer ActionScript-tolken åt det angivna objektet. Nu kan koden skrivas om enligt följande:

Med (Math) (a = PI * r * r; x = r * cos(PI); y = r * sin(PI/2); )

Låt oss ta en titt på det allmänna kommandoformatet:

med (objekt) (
uttalande(n);
}

objekt— en instans av ett ActionScript-objekt eller filmklipp.

uttalande(n)- ett kommando eller en grupp av kommandon inneslutna i hängslen.

Låt oss titta på ett annat exempel, där objektet används Filmklipp heter someOtherMovieClip:

Med (someOtherMovieClip) ( _x = 50; _y = 100; gotoAndStop(3); )

Följande skriptutdrag visar hur det föregående exemplet kan skrivas utan att använda kommandot with:

SomeOtherMovieClip._x = 50; someOtherMovieClip._y = 100; someOtherMovieClip.gotoAndStop(3);

Det är möjligt att använda kapslade med kommandon för att komma åt information i många kontextuella områden.

Flash duplikat av programmet "Pravilka" från paketet "Hits of Robotland".

När vi programmerar knapparna kommer vi aktivt att använda förgreningsoperatören: om och om annat. Vi kommer också att organisera driften av en räknare som lägger till poäng till användaren vid ett korrekt svar och subtraherar poäng i händelse av att användaren trycker på knappen "Nästa" utan att korrigera ett fel eller göra felaktiga korrigeringar.

Vi kommer att organisera arbetet med ett filmklipp (pris), där "prisfonden" kommer att placeras. Om användaren får 10 poäng kommer hans pris att vara en korg med läckra frukter. Om användaren har 9 eller 8 poäng som pris kommer han att få en bit ost, om användaren har "turen" som får 6 eller 7 poäng får han en pumpa, men om han får 5 eller mindre än 5 poäng , han ska få en tomat!

För de som gillar ett betyg på fem poäng, låt oss översätta ovanstående till ett språk som är tillgängligt för skoltidningen:

Frukt korg - 5 ;
En bit ost - 4 ;
Pumpa - 3 ;
Tomat - 2 .

När vi kommer åt Movie Clip använder vi kommandot with.

Vår scen kommer att använda 11 bildrutor. De första 10 ramarna kommer att vara "arbetsblad" på vilka fraser med grammatiska fel (inmatningstext) kommer att placeras. Vanligtvis lämnas inmatningsfälten tomma, men i vårt fall borde de fungera! Varje ark kommer att programmeras med ett dynamiskt fält. Om användaren inte korrigerar det grammatiska felet kommer texten att visas: "Du korrigerade inte felet!"

Detta program använder två lager. Det nedre lagret är bakgrunden, det innehåller den statiska texten "Program Correct" och en grafisk symbol med en hatt.

Om du absolut vill använda något exotiskt typsnitt installerat på din maskin i programmet för att skriva titeln, glöm inte att använda Break Apart-proceduren från menyn Modifiera för denna text. Med andra ord, förvandla text till grafik. Och då kommer din text inte att förvandlas till gobbledygook på en maskin som inte har detta typsnitt!

Nu är allt i sin ordning. Låt oss skriva ett skript för bildruta 1:

Sluta(); fscommand("showmenu", "false"); i = 0;

När du spelar upp en video måste du inaktivera "Meny". På så sätt kommer vi inte att tillåta användaren att ta ett "steg tillbaka". Och vi "slår på" disken också.
Låt oss skriva åtgärden för bildrutor 2-10:

Låt oss titta på hur knapparna fungerar med den första ramen som exempel. Du kan programmera de återstående knapparna själv.

På (släpp) ( if (t1=="White Chrysanthemum") ( i++; gotoAndPlay(2); ) else ( i--; z1 = "Du fixade inte felet!"; ) )

Nu kommer vi att bilda "Prisfonden". Låt oss skapa ny symbol skriv filmklipp med namn pris där 5 ramar kommer att fungera. Vi kommer att skriva en kampanj för alla bildrutor i klippet:

Den första ramen i klippet kommer att vara tom.

I den andra ramen placerar vi en fruktkorg och ger ramen en etikett: fem.
I den tredje ramen kommer vi att placera en bit ost och tilldela en etikett till ramen: fyra.
Låt oss placera en pumpa i den fjärde ramen och tilldela en etikett till ramen: tre.
Låt oss placera en tomat i den femte ramen och tilldela en etikett till ramen: två.

I det här programmet importerades all denna "matvariation" från ClipArt97-samlingen (wmf-filer). Men du kan skapa din egen "prisfond", allt beror helt på din fantasi.

Låt oss återvända till scenen och på den sista 11:e bilden kommer vi att placera klippet vi skapade med priser. Glöm inte att skriva det på scenen. Instansnamn: pris. Vi kommer att skriva ett skript till denna ram som, genom att analysera innehållet i disken, "ger" användaren ett pris:

Sluta(); sh = i; med (_root.priz) ( om (dvs

Testa videon. Och om det behövs, felsök det.

För att förenkla testprocessen, skapa ett dynamiskt textfält på den sista ramen med namnet sh och visa räknardata i detta fält. För att göra detta, lägg till den andra raden i det 11:e ramskriptet:

När du har slutfört felsökningsprocessen, radera det här fältet och raden du angav.

Hemläxa: Grunderna i programmering i Macromedia Flash MX

Åh, så många underbara upptäckter vi har
Förbered upplysningens anda
Och erfarenhet, son till svåra misstag,
Och geni, vän av paradoxer,
Och slumpen, Gud uppfinnaren.
Alexander Sergeevich Pushkin, "Eugene Onegin"

Din uppgift är att skapa en video som duplicerar materialet som presenteras i denna föreläsning. Du kan välja fraserna själv.

Du kan hitta det illustrativa materialet som används för att bilda "prisfonden" för videon i arkivet som medföljer föreläsningsmaterialet. Detta arkiv innehåller filer i wmf-format. Om denna prispott inte uppfyller dina krav får du gärna vara kreativ och använda ditt eget bibliotek.

Skicka in din genomförda uppgift som en fil i fla-format (om filstorleken överstiger 150 KB, arkivera filen) och skicka den till din lärare.

Jag önskar dig framgång med att lära dig Macromedia Flash MX på egen hand!

Avsnitt på denna sida:

Låt oss nu prata om den så kallade speciella textblock, det vill säga om textblock som utför speciella funktioner. För tillfället kommer de dock inte att vara användbara för oss, men de kommer att behövas när vi börjar skriva program i Flash-miljön (programmering är tillägnad del IV denna boken).

Inmatningsfält

Inmatningsfält - Det här är en sorts liten textredigerare placerad i ett Windows-programfönster och utformad för att skriva in text med en eller flera rader. Samtidigt hanterar Windows själv textinmatning: vi skriver helt enkelt tecken, använder piltangenterna, , , välj texten, använd urklippet, som i alla "stora" textredigerare. Microsofts programmerare har arbetat hårt för att göra vanliga Windows-inmatningsfält riktigt bekväma.

För att skapa ett inmatningsfält i Flash måste du först placera ett vanligt textblock på ditt kalkylblad och markera det med pilverktyget (du behöver inte skriva in någon text i textblocket). Hitta sedan i det övre vänstra hörnet av panelen Egenskaper en liten rullgardinslista (se fig. 7.4) och välj objektet i den Mata in text. Om vi ​​efter detta öppnar det resulterande textblocket kommer vi att se vad som visas i fig. 7.9.


Så vad ser vi? Och vi ser en komplett uppsättning av storleksändringsmarkörer (de kommer att sparas även om vi stänger inmatningsfältet). Detta innebär att vi också kan ändra den vertikala storleken på det resulterande inmatningsfältet. Och den rektangulära markören från det övre högra hörnet kommer att flyttas till det nedre högra - detta är ett tecken på att vi har ett inmatningsfält framför oss.

Panelvy Egenskaper efter att ha valt inmatningsfältet visas i fig. 7.10. Som vi ser dök de upp där ytterligare element kontroller som måste beaktas.


Först och främst, precis under listan som vi just använde, dök ett fält upp där vi måste ange en unik Namn, identifiera inmatningsfältet för Flash som vi skapade. Varje inmatningsfält som skapas på ett kalkylblad måste ha ett unikt namn. Detta namn kan innehålla bokstäver i det ryska och latinska alfabetet, siffror och understreck, och det måste börja med antingen en bokstav eller ett understreck.

Under inmatningsfältet för spårningsuppgiften finns en annan rullgardinslista. Använd den för att välja typ av inmatningsfält. Det finns fyra objekt tillgängliga i den här listan:

? En kö- regelbundet en rad inmatningsfält;

? Flerlinje- flerrads inmatningsfält(med andra ord, redigeringsområdet);

? Multiline utan omslag- ett inmatningsfält med flera rader som inte automatiskt bryter en rad (även om användaren fortfarande kan bryta en rad manuellt genom att trycka på knappen );

? Lösenord- lösenordsinmatningsfält. Liknar ett vanligt enrads inmatningsfält, men döljer texten som skrivs in i det och visar istället en sträng med asterisker.

Till höger om den här listan finns en uppsättning med tre omkopplarknappar. Den första av dem är redan bekant för oss - den låter användaren välja text i inmatningsfältet:


Som kan ses i fig. 7.10, den här knappen är nedtryckt och inaktiverad, d.v.s. den kan inte inaktiveras.

Den andra växlingsknappen, när den är aktiverad, instruerar Flash att bearbeta alla HTML-taggar som påträffas i texten:


Så, om vi omsluter ett stycke text i en tagg<В>.. , kommer Flash att markera den med fet stil. Om den här knappen är inaktiverad visar Flash texten "som den är" tillsammans med eventuella HTML-taggar som anges där.

Generellt sett är den här funktionen bara användbar om vi anger innehållet i ett inmatningsfält från ett ActionScript-skript, så det beskrivs här i förväg. Detaljerad supportinformation HTML-taggar Inmatningsfält och dynamiska textblock finns i Flash onlinehjälpen.

Den tredje växlingsknappen, när den är aktiverad, gör att Flash visar en ram runt inmatningsfältet, vilket gör att det liknar ett standard Windows-inmatningsfält:


Om det är inaktiverat har inmatningsfältet ett "platt" utseende.

Om inmatningsfältet vi skapade ska vara en del av det ursprungliga gränssnittet är det bäst att lämna den här knappen inaktiverad. Om vi ​​vill göra inmatningsfältet mer bekant för användaren eller mer synligt kan vi aktivera den här knappen.

Till höger om dessa tre knappar finns ett inmatningsfält Var. Det här fältet anger namnet på ActionScript-variabeln i vilken texten som skrivs in i inmatningsfältet vi skapade kommer att placeras. En variabel är en slags "lagringscell" av data som skapats i datorns minne och har ett unikt namn med vilket den kan identifieras unikt. Vi kan referera till denna variabel med namn, extrahera data från den eller lägga in ett nytt värde i den. Variabler kommer att diskuteras i detalj i Kapitel 19.

I inmatningsfältet Maximalt antal tecken anger det maximala antalet tecken som användaren kan skriva in i den. Om vi ​​inte vill begränsa detta antal kommer vi att ange värdet 0 där (detta är förresten standardvärdet för fältet).

Låt oss nu återgå till ämnet implementering av typsnitt, men i förhållande till inmatningsfält (mer exakt, till alla speciella textblock). Saken är att i det här fallet görs ingen inbäddning - Flash lagrar bara namnen på de teckensnitt som används. När du spelar upp en färdig bild, letar Flash Player först efter dessa teckensnitt på klientens dator och använder dem, om de finns, för att visa text. Om ett lämpligt typsnitt inte hittas använder spelaren det typsnitt som är närmast det önskade, vilket kan göra att bilden förvrängs. Och detta är inte alltid acceptabelt.

Men vi kan fortfarande tvinga Flash att bädda in beskrivningar av valda tecken i teckensnittet som anges för ett givet inmatningsfält i den resulterande Shockwave/Flash-filen. Nu får vi se hur detta går till.

Att välja teckensnitt som ska bäddas in görs i dialogrutan Inbäddning av karaktärer(Fig. 7.11). Detta fönster visas på skärmen efter att du har tryckt på knappen Bädda in paneler Egenskaper(se fig. 7.10).


Den stora listan i det här fönstret tillåter oss att välja hela grupper av symboler som ska bäddas in i den resulterande Shockwave/Flash-filen. Den innehåller en hel del föremål; samma som garanterat kommer att vara användbara för oss ges nedan:

? Alla (39477 glyfer)- alla tecken i detta teckensnitt till ett värde av 39 477. Denna post tillhandahålls endast i informationssyfte; i verkligheten kommer knappast någon att använda den;

? Versaler (27 tecken)- latinska versaler (27 tecken);

? Små bokstäver (27 tecken)- små latinska bokstäver (även 27 tecken);

? Siffror (11 tecken)- Arabiska siffror (11 tecken);

?Skiljetecken [!@#$%…] (52 tecken)- skiljetecken och speciella beteckningar (52 tecken);

?Grundläggande latin (95 tecken)- bokstäver för de flesta europeiska språk (95 tecken);

?Kyrillisk (499 tecken)- Kyrilliska bokstäver (499 tecken). Kanske den viktigaste punkten i vårt fall.

Som regel markeras flera objekt på den här listan samtidigt (det stämmer - vem behöver bokstäver utan siffror!). För att göra detta, klicka först på det första objektet från uppsättningen av de som vi vill välja och tryck sedan på knappen och, håll den, klicka på de återstående objekten tills vi väljer allt. Efter detta kan du släppa nyckeln .

Under listan över teckensnitt finns ett inmatningsfält Inkludera dessa tecken. I den kan vi manuellt ange de tecken som behöver bäddas in. Den här metoden är användbar om vi bara vill bädda in vissa tecken i ett teckensnitt. Och om vi trycker på knappen Autofyll, Flash själv kommer att ersätta i detta inmatningsfält alla tecken som vi använde i texten i det valda inmatningsfältet.

Allra längst ner i fönstret Karaktärsalternativ det finns ett litet textfält Totalt antal glyfer, visar hur många tecken vi redan har valt för inbäddning. Så vi kan sluta i tid.

Knapp Bädda inte in låter dig snabbt ta bort alla karaktärer som vi har valt för implementering. När du klickar på den rensas inmatningsfältet Inkludera dessa tecken, och i en stor lista försvinner urvalet av de artiklar vi har valt.

Genom att ställa in alternativ för teckensnittsinbäddning i dialogrutan Karaktärsbäddning, knappen ska tryckas in OK, att tillämpa dem. Om du behöver avbryta dessa inställningar, klicka på knappen Annullera.

Dynamiska textblock

Ofta, istället för att visa vanlig, oföränderlig text, vill du visa utdata från ett ActionScript-skript i textform. Till exempel skulle ett sådant skript kunna extrahera nyheter från Compulents webbplats, en väderprognos från Aportas webbplats och växelkurser från Ramblers webbplats, lägga till aktuell tid till den extraherade informationen och visa allt detta som text på skärmen. (Förresten, intressant idé...)

Det är just för att visa text som är resultatet av skriptet som de används. dynamiska textblock.(Vanliga textblock kallas ofta statisk.) Kanske uppstår behovet av sådana dynamiska textblock oftare än för inmatningsfält.

Ett dynamiskt textblock skapas på ungefär samma sätt som ett inmatningsfält. Skapa ett vanligt textblock, markera det med pilverktyget och hitta det i panelens övre vänstra hörn Egenskaper en liten rullgardinslista (se figur 7.4). Du behöver bara välja ett objekt från den här listan Dynamisk text.

Ett valt dynamiskt textblock liknar ett inmatningsfält (se fig. 7.9) och panelen Egenskaper kommer att se ungefär likadant ut som i fig. 7.10. Därför kommer vi inte att ge en beskrivning av kontrollerna som finns i den, utan kommer att begränsa oss till att påpeka de befintliga skillnaderna.

Samma variabler används för att visa text i ett dynamiskt textblock. ActionScript-skriptet placerar utdatatexten i en sådan variabel, och Flash-spelaren utför utmatningen. Namnet på denna variabel skrivs in i samma inmatningsfält som finns under listan, med hjälp av vilken vi just förvandlade ett vanligt textblock till ett dynamiskt.

Nu om skillnaderna. Det finns faktiskt bara en skillnad när det gäller gränssnitt och dessutom är den redan bekant för oss. Växla knapp:


Inklusive möjligheten att markera och kopiera text placerad i ett dynamiskt textblock är nu tillgängligt, och vi kan inaktivera det om vi vill.

Skillnaden när det gäller möjligheter är att ett dynamiskt textblock kan göras rullningsbar. Ett vanligt dynamiskt block måste säkert ha sådana dimensioner att det kan innehålla allt dess innehåll. För ett rullningsbart block är detta inte nödvändigt: liknar områden Windows redigering, kan den "rulla" texten den innehåller. För att kontrollera rullning måste vi skriva lämpliga ActionScript-skript - ett rullningsbart textblock innehåller inte rullningslister.

För att göra ett dynamiskt textblock rullbart måste du först markera det. Efter detta bör du slå på strömbrytaren Rullbar meny Text eller textblockets snabbmeny med samma namn. Om ett textblock för närvarande är öppet kan du dubbelklicka på det fyrkantiga handtaget som finns i det nedre högra hörnet av markeringsrektangeln samtidigt som du håller ned . Det färdiga rullningsbara textblocket visas i fig. 7,12; Observera att markören vi klickade på hade formen av en svart fyrkant.


Under titeln "Macromedia Flash 8: en kurs för en ung fighter", tillägnad denna underbara mjukvaruprodukt och Flash-teknik. Från och med idag kommer de ämnen vi pratar om Flash att bli mer fokuserade. Därför kommer jag från och med nu att utelämna orden "ung kämparkurs" i titeln. Men denna omständighet kommer inte alls att påverka hur materialet presenteras, vars huvudsakliga mål är att svara på många frågor som nybörjare blixtdesigners har och ge en tankeställare till erfarna.

Så idag står användargränssnittskomponenterna i Macromedia Flash Professional 8 på agendan, liksom hur man anpassar dem.


Standard Flash 8-komponenter

Den senaste versionen av det kraftfulla grafikpaketet Macromedia Flash 8, förutom ett gäng verktyg, metoder och tidslinjeeffekter utformade för att skapa högkvalitativ animering, innehåller ett fullfjädrat objektorienterat programmeringsspråk ActionScript 2.0 och många komponenter (byggd- i programblock som film).

Varför behöver vi komponenter överhuvudtaget? I många fall förenklar de avsevärt processen för att utveckla en interaktiv applikation. Med hjälp av datainmatningsfält och olika växlar på webbplatser kan registreringsformulär enkelt skapas, med hjälp av loaders kan du styra laddningen av text- och multimediadata från olika källor, etc. Idag ska vi bekanta oss med en av komponentklasserna i Flash 8 - användargränssnittselement (User Interface - UI).

Det mest populära objektet i Flash är förstås knappen. Det finns i Flash både som en symboltyp och som ett UI-element. Komponenterna RadioButton, CheckBox, MenuBar etc. används mer sällan, men de är inte mindre viktiga. Komponentfönstret öppnas genom att trycka på Ctrl+F8 eller från menyn Fönster -> Komponenter. Se tabellen för de viktigaste komponenterna i användargränssnittet.

Komponent Beskrivning
Dragspel Formulärnavigator
Varna Textmeddelande
Knapp Enkel knapp
Kryssruta Kryssruta
Kombinationsrutan Kombinationslista
Lista Lista
Lastare Lastarcontainer
Radio knapp Omkopplare
TextArea Textområde
Fönster Behållare i form av ett fönster

Idag, med hjälp av exemplet att ställa in parametrarna för ett användargränssnittselement som heter Alert, kommer vi att titta på principerna för att arbeta med komponentstilar.


Förinställning av komponentegenskaper

Med Alert-komponenten kan du organisera en liten dialog mellan användaren och datorn. Låt oss föreställa oss något som liknar Alice talking-programmet, skapat på 60-talet och som hade en liten artificiell intelligens som gjorde det möjligt att föra en konversation med en person med hjälp av hans svar på tidigare ställda frågor.

Låt oss först ändra etiketterna på knapparna och skriva en hanterare för deras klick. Beroende på vilken knapp användaren klickade på visas ett speciellt meddelande. Allt detta uppnås utan att använda stilar. Så låt oss dra varningsfönstret till ett tomt ark från panelen Komponenter och förse det med alla nödvändiga inställningar. Låt oss komma ihåg att i vilken Flash fla-fil som helst finns ett bibliotek (kallas genom att trycka på Ctrl+"L"), där instanser av komponenter lagras. Varningsfönstret passar också här. Eftersom vi inte vill att den alltid ska hänga i arbetsytan kan vi ta bort den därifrån (från ritytan förstås). Alert kommer att finnas kvar i biblioteket.

Välj nu den första bildrutan på tidslinjen, gå till avsnittet Åtgärder (F9) och skriv följande programkod: "import mx.controls.Alert" (för mer information, se listan). Många av de nödvändiga inställningarna kan endast ställas in med ActionScript. Varningsfönstret anropas av proceduren Alert.show ("text", "fönstertitel", "knappar som används", "fönster", "klickhanterare", "vald knapp") med många parametrar specificerade inom parentes. För de knappar som används anges "Alert.YES | Alert.NO" med enkla citattecken (det finns också "OK" och "Cancel"-knappar), och för händelsehanteraren - "buttonclick"-funktionen, som vi kommer att skriva en lite senare. Låt oss nu ändra etiketterna på "YES" och "NO"-knapparna med Alert-komponentens egenskaper "yesLabel" och "noLabel". Ställ sedan in de nödvändiga måtten ("knappbredd" och "knapphöjd"). För att välja de optimala parametrarna är det användbart att köra videon för testning - "Enter" + Ctrl-tangenter. Logiken för "buttonclick"-funktionen är som följer: när knappen "Wonderful" trycks in, dyker meddelandet "Keep it up!" upp, när "So-so" - "Håll näsan uppe!" För att ändringarna ska träda i kraft måste beskrivningen av denna funktion och inställningarna för Alert-komponenten föregå anropet till Alert.show-proceduren, som visas i listan:

Importera mx.controls.Alert; Alert.buttonWidth=150; Alert.buttonHeight=25; Alert.yesLabel="Underbart"; Alert.noLabel="Så-så..."; buttonclick = function(evt)(if (evt.detail == Alert.YES) (Alert.show("Keep it up!", "Macromedia Flash 8");) if (evt.detail == Alert.NO) ( Alert .show("Håll näsan uppe!", "Macromedia Flash 8");)) Alert.show("Vad händer, kompis?", "Macromedia Flash 8", Alert.YES | Alert.NEJ, detta, knappklicka , Alert .YES);

På liknande sätt kan du organisera en mer komplex dialog med användaren.


Arbeta med stilar

Vad används stilar till? Jag ska förklara nu. Varje komponent i Flash har ett visst färgschema, teckenstorlek, etc. Men om du till exempel utvecklar din egen webbplats, måste du "justera" komponenterna till webbplatsen för att inte kränka bildens integritet. Jag tror att jag inte kommer att missta mig om jag säger att varje blixtdesigner strävar efter att skapa sina videor på ett speciellt sätt som är unikt för honom. Med stilar och teman i Flash 8 kan du göra varje komponent unik. Men låt oss inte ryckas med och fokusera på stilar för tillfället.

Programmeringsgränssnittet för formatering av applikationer (Styles API) ger användaren egenskaper och metoder som kan användas för att ändra färgen på en komponent och formatera texten på den. Vanligtvis räcker detta. Flash 8 levereras med två stilar med en uppsättning parametrar: "Halo" och "Sample", som finns i filerna HaloTheme.fla respektive SampleTheme.fla. Bilden visar deras plats i Windows 2000/XP. Det bör noteras att temat "Sample" har många fler egenskaper, så det är mer tillrådligt att använda det för att ändra komponenter. Och detta görs på följande sätt:

  1. Kommandot Arkiv -> Importera -> Öppna externt bibliotek anropas och filen SampleTheme.fla anges i dialogrutan. Välj sedan Flash UI Components2 -> Themes -> MMDefault i den importerade bibliotekspanelen. Sedan från det här fönstret måste du dra mappen med resurserna för önskad komponent (tillgångar) till symbolbiblioteksfönstret i det aktuella dokumentet.
  2. Med metoderna setStyle (parameter, värde) och getStyle (parameter) kan du ställa in eller få värdet för en viss parameter för den valda stilen.

Eftersom vi arbetar med Alert-komponenten kommer vi att dra mappen "Alert Assets" till symbolbiblioteket i vårt dokument. Sedan kommer vi att använda standardegenskaperna för "Sample"-temat (se lista).

Global.styles.Alert.setStyle("färg", "röd"); _global.styles.Alert.setStyle("themeColor", "haloBlue"); _global.styles.Alert.setStyle("bakgrundsfärg", "0xE0C5FE"); _global.styles.Alert.setStyle("fontFamily", "times new novel"); _global.styles.Alert.setStyle("fontSize", "15");

Varningsdialogrutans färg är nu lila (0xE0C5FE) och dess text är nu blå, med teckensnittet inställt på 15-punkts Times New Roman. Det bör noteras att varningssymbolen ändrades på detta sätt, så ändringarna kommer att påverka alla dess instanser. En beskrivning av alla Halo- och Samlpe-temaegenskaper finns i Flash 8 Hjälp.


Tänk om detta inte räcker för mig?

Om, även med stilar, komponenternas utseende inte uppfyller dina estetiska krav, kan du prova att skriva ditt eget tema. För att göra detta, redigera eller byt ut skalen för de nödvändiga komponenterna i ett av standardteman. För att göra detta, spara filen HaloTheme.fla eller SampleTheme.fla under ett unikt namn, ladda den, gå till symbolbiblioteksfönstret (Fönster -> Bibliotek eller Ctrl+L), välj önskad komponent och välj alternativet "Redigera" i snabbmenyn. Vissa UI-element består av många delar, så de kan enkelt transformeras genom att rita om eller återskapa varje del. Sådana komponenter är Button, CheckBox, ComboBox, DataGrid, RadioButton, etc. Andra skal ritas programmatiskt. I det här fallet att ändra utseende komponent kommer att behöva ändra källkoden. Detta är till exempel Alert-komponenten. Eftersom att skapa ett anpassat tema är en tidskrävande process, kommer vi inte att behandla det i detalj. Åtminstone för stunden. Det är allt.

Ledningen satte uppgiften: den måste hållas uppdaterad Flash spelare. Skala: ~15 000 datorer, varav hälften faktiskt behöver FP.

Det verkar som om problemet är - vi skapar en domänpolicy, trycker in MSI-paketet och gläds... Men så är inte fallet! Företagsstrukturen är högt spridd, d.v.s. På avlägsna platser med en kanal på ~1 Mbps på 20 datorer är det redan ett problem att trycka till och med 15 Mb av politiker - på morgonen slår anställda på datorn och väntar en halvtimme på att den ska laddas tills allt har laddats ner och installerats (eller faller helt enkelt av på grund av en timeout). För att inte tala om det faktum att datorer på sådana kontor har den obehagliga egenskapen att periodvis falla utanför domänen.

Vi behövde en annan lösning som skulle fungera oavsett policy, inte anstränga användaren på något sätt och använda kanalen minimalt (åtminstone så att inte alla laddar ner samtidigt). Alternativ med manus var inte heller lämpliga av förklarliga skäl.

Google kom till undsättning, som vanligt: ​​det visade sig att du kan installera en intern uppdateringsserver och konfigurera den inbyggda FP-uppdateringen på den. I det här fallet behöver du bara distribuera inställningsfilen till klienter. Detaljer under snittet.

Konfigurera en uppdateringsserver

1. Vi får licensavtal

Adobe kräver ett licensavtal för att distribuera sin programvara. Låt oss inte bryta mot användarvillkoren och skaffa en licens (som tur är, det är inte alls svårt): FlashPlayer: Adobe Runtimes / Reader Distribution License Agreement. Licensen utfärdas för en period av ett år. Efter utgången kan du skicka begäran igen.

2. Höjning av webbservern

Plattformen spelar ingen roll; i mitt fall kör jag den N:e platsen på IIS under Win2012. Den förbrukar praktiskt taget inga resurser även om ~3000 datorer redan är konfigurerade för denna server.

Serverinställningar:

  • Åtkomst via portar 80, 443 (http, respektive https).
    Den första behövs, faktiskt för nedladdning, den andra FP kommer att gå för XML-versionen av den nuvarande versionen.
  • Giltigt https-certifikat.
    Jag utfärdade ett certifikat baserat på företagets rot, som finns på alla maskiner som standard.
  • Kataloglista.
    Jag kontrollerade inte arbetet utan det - dokumentationen frågar, jag bestämde mig för att göra det som skrivet.
Jag kommer inte att gå in på detaljer om hur jag konfigurerar servern.

För tydlighetens skull ringer vi servern FlashPlayerUpdate.domain.local.

3. Ladda ner resurser och ladda upp dem till servern

Vi skapar ett katalogträd i roten på webbservern: /pub/flashplayer/update/current/sau/ .

Katalogträd på min server:

Om du begärde en licens i det första steget, bör du som svar få ett brev med en länk varifrån du kan ladda ner FlashPlayer - följ just denna länk. Om du inte har fått det eller inte har begärt det, gå hit: https://www.adobe.com/products/flashplayer/distribution3.html och ladda ner arkivet från länken " Ladda ner resurser för bakgrundsuppdatering":

Förlängd supportversion eller offentlig release

En anmärkning måste göras här. Det finns 2 nedladdningsalternativ på sidan: standard (Public) och Extended Support Release. I mitt fall är stabilitet viktigt och nya funktioner behövs inte, så ESR-alternativet valdes. Samtidigt lade jag till en viss mängd hemorrojder till mig själv: den offentliga versionen kan laddas ner direkt med skript från Macromedias webbplats. Jag har fortfarande inte googlat hur man laddar ner ESR, så i mitt fall uppdateras innehållet på den interna servern i manuellt läge.

I slutet av artikeln har jag bifogat 2 PowerShell-skript: for automatisk uppdatering(endast för standardversionen; lätt portad till bash), för att söka efter uppdateringar och meddela via e-post (för alla versioner, inklusive ESR).


Packa upp det nedladdade arkivet i mappen /pub/flashplayer/update/current/sau/ på servern.

4. Distribuera konfigurationsfilen till klienter

Beroende på systemkapacitet:

  • 32-bitars: C:\Windows\ System32\Macromed\Flash\mms.cfg
  • 64-bitars: C:\Windows\ SysWOW64\Macromed\Flash\mms.cfg
Du kan distribuera det på vilket sätt som helst. Jag använde en kombination av domänpolicy och en antivirusadministrationsserver (för datorer som lämnade domänen).

I filen aktiverar vi tyst automatisk uppdatering, anger uppdateringsintervallet (i dagar), sökvägen till vår server och, för säkerhets skull, loggning för att göra det lättare att diagnostisera problem om de uppstår:

AutoUpdateDisable=0 SilentAutoUpdateEnable=1 AutoUpdateInterval=2 SilentAutoUpdateServerDomain=FlashPlayerUpdate.domain.local SilentAutoUpdateVerboseLogging=1
Om allt gjordes korrekt, bör Flash Player på klientdatorer börja uppdateras enligt ett schema (enligt filen ovan - en gång varannan dag). Vanligtvis kör Adobes uppdateringstjänst en gång i timmen för att kontrollera uppdateringsvillkoren - vid denna tidpunkt bör Updater se konfigurationsfilen, konfigurera om uppdateringarna enligt de angivna inställningarna och gå till ny server kontrollera version.

Det vill säga ungefär en timme efter att du distribuerat konfigurationsfilen kan du titta på loggarna på servern efter förfrågningar om att kontrollera versionen.

Automatisering

Som en klassisk representant för IT-bröderskapet hatar jag rutinmässigt manuellt arbete och kunde helt enkelt inte låta bli att automatisera verifieringen och nedladdningsprocessen ny version. Men som nämnts ovan har jag ännu inte hittat något sätt att ladda ner ESR-versioner från Macromedias webbplats, så jag använder bara skriptet för att söka efter uppdateringar. Förslag är välkomna.
Skript för automatisk nedladdning av uppdateringar
Endast för offentlig version!

Operationslogik: skriptet laddar dumt ner uppdateringsfiler direkt från Macromedia för versionerna 11,15,16,17,18,19 (om någon version redan har tagits bort från webbplatsen kommer skriptet helt enkelt att svära att det inte kunde laddas ner och kommer att hoppa över det) och ersätter det med en uppdateringsserver. Ingen versionskontroll. På teststadiet använde jag det här skriptet: Jag körde det genom schemaläggaren på servern på natten.

Om du vill kan du korsa det här skriptet och nästa och få full automatisering med versionskontroll, aviseringar och nedladdning endast om det finns uppdateringar.

Skriptparametrar:

  • *FPRoot- sökväg till uppdateringsserverns rotmapp. Lokalt eller nätverk. Naturligtvis måste användaren från vilken skriptet kommer att startas ha skrivrättigheter till denna mapp.
  • FPDownloadRoot- sökväg på Macromedias webbplats. Detta är inställt som standard, men kan ändras vid behov.
  • Ladda ner proxy http:// proxy.domän.lokal.
  • ProxyCredits
  • UserAgent
  • Tvinga
* - nödvändig parameter

Användningsexempel:

Powershell.exe -kommando "& ".\FPUpdater.ps1" -FPRoot "\\FlashPlayerUpdate\pub\flashplayer\update\current\sau" -DownloadProxy "http://proxy.domain.local" -ProxyCreds "DOMAIN\UserName " -UserAgent "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) som Gecko""
Alla parametrar kan hårdkodas till ett skript om långa startrader är skrämmande.

Skript för att kontrollera uppdateringar och meddela via e-post
Uppdateringar kontrolleras enligt standardversionen, men eftersom de uppdateras samtidigt (ingen har avbrutit säkerhetsfixarna) kommer det att fungera även för ESR. För att skriptet ska fungera måste du skapa en CurrentPublic-fil i roten på webbservern (bredvid pubmappen), där du anger den aktuella offentliga versionen för ActiveX(det är ActiveX-versionen som används för att kontrollera).

Operativ logik: skriptet jämför versionen som erhålls från CurrentPublic-filen från din server med versionen på Macromedia-servern. Den tittar på versionen på servern enligt logiken för den automatiska uppdateringen: först letar den efter den aktuella huvudbyggnaden i XML, går till mappen med den stora och tittar på den fullständiga versionen där.

Skriptparametrar:

  • *FPIntServerRoot- Vår serveradress. Till exempel: FlashPlayerUpdate.domain.local
  • FPDownloadRoot- sökväg på makromedias webbplats. Detta är inställt som standard, men kan ändras vid behov.
  • ESR- kontrollera ESR-versionen (utan denna flagga kommer den att kontrollera den offentliga).
  • Ladda ner proxy- proxyserver, om den används i ett företag. Skriv i sin helhet: http:// proxy.domän.lokal.
  • ProxyCredits- användarnamn för auktorisering på proxyn.
  • UserAgent- för att ändra användaragenten som PowerShell ska ladda ner. Till exempel är vår proxy begränsad av UserAgents, jag använder Internet Explorer-agenten.
  • Tvinga- inaktivera certifikatkontroll för Invoke-Webrequest cmdlet (mer exakt, se till att den litar på alla certifikat).
  • *MailTo- e-postadresser som meddelanden kommer att skickas till.
  • *MailFrån- från vilka meddelanden kommer. Till exempel: [e-postskyddad]
  • SmtpServer- smtp-server genom vilken meddelandet kommer att skickas.
* - nödvändig parameter

Användningsexempel:

.\FPCheckUpdate.ps1 -FPIntServerRoot "fp-update.domain.local" -ESR -Proxy "http://proxy.domain.local" -UserAgent InternetExplorer -Force -MailTo " [e-postskyddad]","[e-postskyddad]"-MailFrom" [e-postskyddad]" -SmtpServer "smtp.company.com"

Resurser som används

UPD

Något försenad uppdatering från 17/06/16.

Sedan den här artikeln skrevs har Adobe lyckats ändra ordningen för åtkomst till FlashPlayers nedladdningssida två gånger. Som ett resultat måste du nu för att komma åt nedladdningssidan först logga in på Adobe ID. Det vill säga möjligheten att att tolka sidan för ESR-versionen är inte längre tillgängliga rullar.

Jag har inte brytt mig om auktorisering eller att ta emot och skicka cookies via PowerShell än. Som ett resultat gjorde jag om skriptet för att kontrollera ESR på distribution3-sidan, som kan försvinna när som helst. Så långt så får vi se mer.

I början av året ställde jag en fråga på Adobes forum om att söka efter uppdateringar av ESR-versionen. De lovar att komma på något, men än så länge finns problemet kvar.

UPD2

Häromdagen dök följande information upp på distributionssidan för Flash Player (länken som du fick när du fick en distributionslicens):

UPPMÄRKSAMHET! Viktiga ändringar med Extended Support Release

Den utökade supportversionen utformades ursprungligen för att minimera den tid IT-administratörer spenderar på att certifiera varje ny version av Flash Player: Den utökade supportversionen begränsade ändringar av säkerhetsändringar och korrigeringar av kritiska funktionsproblem. Vid den tiden fanns det många fler funktionsändringar i varje version av Flash Player än vad det var säkerhetsändringar. Men nu har situationen förändrats: antalet proaktiva och reaktiva säkerhetsåtgärder uppväger vida funktionsförändringar. I praktiken skyddar Extended Support Release inte längre IT-organisationer från stor mängdändringar som gjorts i standardversioner av Flash Player, men minskar bara funktionella risker. I detta avseende togs beslutet att avbryta den utökade supportversionen och koncentrera sig på att endast utveckla standardversioner. Lägg till taggar

Den sista artikeln ägnades åt animation. Vi skapade animationer baserade på rörelseinterpolering, forminterpolering och helt enkelt att komponera rörelse från individuella bildrutor. Jag tycker att det är dags att gå vidare till ett mer avancerat ämne, titta på verktyget som skapar grunden för de flesta kvalitetsfilmer från Flash.

Det här verktyget är ActionScript, ett händelsestyrt språk inbyggt i Flash. Senaste versionen ActionScript (som finns i Flash 5) skiljer sig markant från ActionScript, som fanns i Flash 4. Om det i den tidigare versionen var en begränsad uppsättning kommandon, som endast tillåtit grundläggande åtgärder, och angavs med ett inte särskilt användarvänligt gränssnitt, så är det nya ActionScript ett kraftfullt språk, med en utökad uppsättning kommandon, stöd för klasser, arv (!), och mycket bekvämare gränssnitt.

ActionScript gör dina sidor interaktiva. Du kan reagera på händelser från musen eller tangentbordet, och du kan utföra alla åtgärder när du spelar en viss bildruta.

För att behärska ActionScript fullt ut är det lämpligt att redan ha erfarenhet av programmering (helst i C++, JavaScript, etc.). En av fördelarna med Flash-språket är dock att du inte behöver vara ett Flash-proffs, eller helt bekant med ActionScript, för att skriva kvalitetskod i det. Du kan använda de språkfunktioner som du anser nödvändiga för ditt arbete.

Eftersom den här artikeln handlar om grunderna i språket, kommer vi att täcka:

  • Åtgärdspanelen är där nästan all kommunikation med ActionScript sker.
  • Knappar - hur man får dem att fungera som vi behöver.
  • Sökvägar - hur kommer man åt de nödvändiga objekten?
  • Grundläggande åtgärder med Flash-tecknade filmer (filmklipp) - vi kommer att styra uppspelningen av filmen som vi vill.
  • Felsökning i ActionScript - Utdata och felsökningsfönster.

Syftet med den här artikeln är att ge dig en känsla för ActionScript, att visa att detta språk kan användas både för att skapa mycket imponerande program och för att utföra grundläggande åtgärder som kommer att göra din sida mycket mer attraktiv.

Villkor

Innan vi går in på specifika åtgärder, några ActionScript-termer:

  • Handlingar- det här är instruktioner som talar om för Flash-tecknad film vad den ska göra. Från dem kommer namnet på språket - ActionScript (bokstavligen - action script). Låt oss komma överens om att inom ramen för denna artikel kommer vi att använda termen "instruktioner" för att inte förväxlas med de faktiska åtgärder som vi kommer att utföra.
  • evenemang- det här är de handlingar som uppstår när den tecknade filmen spelas. Händelser kan till exempel inträffa när laddningen av en viss ram slutar, när vi når en viss bildruta, när användaren trycker på en tangent på tangentbordet eller när muspekaren är över vårt objekt.
  • Uttryckär varje del av en instruktion som producerar ett värde. Följande exempel är uttryck: 2 + 2, 2 * 2, a + b, 2*pi*r, (15 + k) * slumpmässigt (10).
  • Funktionerär ett kodblock som kan återanvändas. Du kan skicka värden till en funktion och få ett returresultat från den. Till exempel, nummer = get_color(15, 24). 15 och 24 är argument (eller parametrar) till funktionen get_color, vars returvärde skrivs till talvariabeln.
  • Klasserär typer av föremål. Till exempel är trädklassen växt. Flash har ett antal fördefinierade klasser (ungefär som JavaScript-klasser). Du kan skapa dina egna klasser eller ändra befintliga.
  • Instanserär bokstavligen instanser av vissa klasser. Till exempel kan en växtinstans vara ett träd, en buske eller en blomma. En instans är redan ett specifikt verkligt objekt. Om en klass är en definition av ett objekt (instans), så är en instans redan en konkret utföringsform, den är en klass i aktion. Varje instans kan ges ett namn så att funktioner eller variabler för objektet kan nås genom den.
  • Handlareär särskilda instruktioner som bearbetar händelser. Till exempel onClipEvent- en hanterare för åtgärder associerade med en specifik symbol (se).
  • Operatörerär språkelement som beräknar värden baserat på ett eller flera argument. Till exempel returnerar additionsoperatorn (+) summan av de två värdena till vänster och höger om den.
  • Variablerär identifierare som kan lagra värden. Till exempel, a = 5; eller namn = "Michael".

Det här är termerna vi kommer att använda när vi diskuterar ActionScript. Så…

Åtgärdspanel

Åtgärdsfältet används för att visa och öppna ActionScript-program (Fig. 1). Det finns två driftsätt med panelen - normal (för dummies) och expert. I expertläge är listan med kommandon ett enkelt textinmatningsfält. I normalt läge kan vi inte direkt redigera kommandon. För att göra detta, använd alternativpanelen.

Du kan lägga till en instruktion genom att klicka på "+"-knappen (se fig. 1) eller genom att välja lämplig instruktion i listan över språkelement. Dessutom, för alla åtgärder i Flash finns det nyckelsekvenser som kan användas för att göra detta mycket snabbare. De visas till höger om varje åtgärd i "+"-knappens meny. Till exempel för att lägga till en funktion sluta(), måste du trycka på Esc+st (i tur och ordning: Esc, sedan "s", sedan "t").

Du kan radera en instruktion genom att välja den och trycka på "-"-knappen (eller helt enkelt Delete-tangenten).

Jag rekommenderar att du inte omedelbart börjar använda expertläget om du inte har erfarenhet av programmering i Java-liknande språk (C++, Java, JavaScript). Normalläget har en stor fördel som gör det oumbärligt för nybörjare - det är mycket mindre chans att göra misstag med språkets syntax. Detta kommer att hjälpa nybörjare att snabbt förstå krångligheterna med ActionScript.


Ris. 1 - Åtgärdsfält

Åtgärdspanelen visar åtgärderna för objektet eller ramen som för närvarande är valda.

Knappar

Det första du vill när du börjar lära dig Flash-interaktivitet är att göra något som skulle svara på användarnas handlingar, att "återuppliva" ditt skapande, att lägga till respons. Det enklaste sättet att göra detta är med knappar. Därför börjar vi med dem.

Som du vet finns det i Flash en speciell typ av symbol för att skapa knappar - Knapp (se). Låt oss anta att du redan har lärt dig hur man skapar knappar, låt oss nu lära oss hur man spårar klick på dessa knappar.

Knappar i Macromedia Flash har en omfattande lista över händelser som vi kan svara på:

  • Tryck- musknappen trycks ned när markören är inom knappen;
  • släpp- musknappen släpps när markören är inom knappen;
  • släpp utanför- musknappen släpps när markören är utanför knappen;
  • rulla över- muspekaren går in i knappen;
  • rulla ut- markören går bortom knappen;
  • Dra över- markören anger gränserna för knappen, medan knappen trycktes ned och musknappen trycktes;
  • dra ut- markören går bortom knappen, medan knappen trycktes ned och musknappen trycktes;
  • knapptryckning("tangent") - en "tangent" trycktes. Du kan se en lista med nycklar i Flash-hjälpen (Key-objekt), eller använd alternativfältet för att ange önskad nyckel.

Tyvärr "förstår" Flash bara vänster musknapp. Den högra används för att anropa snabbmenyn (högerklicka på någon Flash-tecknad film). Jag har ännu inte stött på några sätt att fånga mittknappen eller mushjulet i Flash; jag tror inte att de finns.

Dessa händelser avlyssnas med hjälp av direktivet på(). Dess syntax är:

På (händelse) (... // Våra handlingar)

Nedan kan du försöka utlösa några händelser själv:

Ett mycket vanligt exempel är att följa en länk när en knapp klickas:

På (släpp) ( getURL("http://rubs.boom.ru"); )

För att testa detta scenario, markera din knapp, tryck på Ctrl+Alt+A och gå in i programmet.

Så här kan du enkelt fånga upp alla händelser som är kopplade till en knapp. Tja, hur man använder dem är helt en fråga om din fantasi.

Grundläggande steg med filmklipp

En enorm mängd kreativitet i Flash kommer från symbolmanipulation. Nästan alla grundläggande tekniker, alla knep och effekter är omöjliga utan dessa åtgärder.

Med ActionScript kan du göra nästan vad du vill med karaktärer. Du behöver bara komma ihåg att dessa åtgärder endast kan utföras antingen som svar på en användaråtgärd eller när en viss ram inträffar på tidslinjen.

Så vad har vi? Jag kommer bara att lista de viktigaste (enligt mig) verktygen. Resten hittar du i listan över språkelement eller i hjälpen.

Filmklippsfunktioner som kan kallas:

  • spela() - startar eller återupptar uppspelning av ett klipp;
  • sluta() - stoppar uppspelning av klipp;
  • gotoAndPlay() - går till en viss bildruta (scen) och fortsätter uppspelningen;
  • gotoAndStop() - går till en specifik bildruta (scen) och stoppar uppspelningen.

Egenskaper (parametrar) för klipp som kan läsas/ändras:

  • _x, _y - klippkoordinater (i pixlar);
  • _xscale, _yscale - klippskala (i procent), horisontellt respektive vertikalt;
  • _bredd höjd - bredd och höjd på klippet (i pixlar);
  • _rotation - klippets rotationsvinkel (i grader);
  • _alfa - genomskinlighet av klippet (i procent);
  • _synlig - synlighet.

Detta är inte allt som kan göras med klipp. Använd andra parametrar, experimentera, var kreativ!

Namn

För att komma åt klipp måste vi förstå konceptet med ett objektnamn (instansnamn) och en sökväg till ett objekt (målsökväg). Låt oss komma överens om att filmklippet och objektet är samma saker för oss.

Objektnamnet är namnet på en specifik symbolinstans. Låt oss säga att vi kan ha en symbol - en bil, och instanser av denna symbol kommer att kallas "Machine1", "Machine2", "Pickup", "Zaporozhets"...

För att ge ett namn till ett objekt måste du markera objektet och i instanspanelen (Fönster->Paneler->Instans, Ctrl+I) i kolumnen Namn, ange namnet på objektet (Fig. 2) ). Namn kan bara bestå av bokstäver, siffror och understreck ("_") och namnet får inte börja med en siffra.


Ris. 2 - Instanspanel

stigar

Sökvägen till ett objekt är en post över objektets namn, med hänsyn tagen till hierarkin. Jag ska försöka förklara vad det är.

Du vet att i Flash kan objekt kapslas in i varandra och på så sätt bilda en hierarki. Så den här kapslingen ger inte bara bekvämlighet vid hantering av objekt, den begränsar också synligheten för objektnamn. Sikten är begränsad till dess nivå. Ett objekt kan direkt (med namn) bara komma åt objekt inom det som är en nivå lägre i hierarkin.

För att komma åt ett objekt på en annan nivå måste du känna till vägen till det. Dessutom kan sökvägen specificeras antingen absolut (från den högsta nivån i hierarkin) eller relativt (från den nuvarande nivån).

Sökvägen inkluderar objekt som vi måste "passera" längs hierarkiträdet för att komma till objektet vi behöver, listade genom en prick. Dessutom finns det flera tips (vi kan kalla dem "virtuella objekt") som ofta är mycket användbara:

detta - en pekare till "själv" (det vill säga till det aktuella objektet). Det kan till exempel behövas när du behöver skicka en pekare till objektet från vilket denna funktion anropas till en funktion.

_förälder - pekare till "föräldern". Pekar på ett objekt på en högre nivå i hierarkin.

_rot - "rot". Detta är början på hierarkin. Du kan inte klara dig utan det när du anger en absolut väg.

Vägen ser ut så här:

leaf.play();- vid delobjektet blad(blad) funktion anropad spela();

_parent.tree.leaf.stop();- det antas att det finns ett föremål på en nivå träd, som har ett föremål blad, varifrån funktionen anropas sluta();

_root.banner._visible = falskt;- gör ett klipp baner, belägen på våning 1, osynlig.



Ris. 3 - Hierarki av klipp

Som illustration, låt oss ta en hierarki av 5 objekt (Fig. 3). Objekt 1-4 är på det 1:a lagret, objekt 5 är på det andra lagret. Objekt 2 är kapslat i objekt 1, och objekt 3 är kapslat i objekt 2. Objekten på bilden är visuellt kapslade i varandra, men det betyder inte på något sätt att så ska vara fallet "i verkligheten". Här är de grupperade för tydlighetens skull. Eftersom namnet på ett objekt inte kan börja med ett nummer, låt våra objekt kallas obj1-obj5.

Låt oss nu ta itu med stigarna. Låt oss först titta på vilka objekt som kan referera till varandra med namn. obj1 kan kontakta obj2, A obj2- Till obj3, men samtidigt obj1 kan inte kontakta obj3 direkt, därför att den ingår inte i obj1, och i obj2.

Låt oss säga att det första objektet behöver objekt 3 för att börja spela igen från den första bilden. Så här går det till:

Obj2.obj3.gotoAndPlay(1);

För att det 4:e objektet ska göra det 1:a objektet (obs med alla underobjekt!) halvtransparent måste det skriva följande i sitt skript:

Parent.obj1._alpha = 50;

Root.obj1._alpha = 50;

Därför att obj4är på den första nivån i hierarkin, sedan för den _rot Och _förälder- samma.

Nu för objekt 3 kommer vi att skriva ett skript som gör objekt 5 osynligt när musknappen trycks ned. I skriptet för objekt 3 skriver vi:

OnClipEvent (mouseDown) ( _root.obj5._visible = false; )

I det här utdraget har vi använt en absolut väg. Om vi ​​använde relativ skulle det se ut så här:

Parent._parent._parent.obj5._visible = falskt;

Jag hoppas att jag löste vägfrågan.

Exemplen ovan visade inte bara hur sökvägar ser ut, utan också hur funktioner anropas och egenskapsvärden tilldelas.

Publikationer om ämnet