Edyta Floras

Edyta Floras Trener on-line /
Konsultant ds.
marketingu

Temat: Statement must appear within on handler

jak w temacie - czy ktoś może mi powiedzieć o co chodzi
informacja pojawia sie w sytuacji kiedy tworze button o nazwie np test i staram sie wykonać kod

test.onPress = function() {
test._visible = true;
}

z góry dziękuję za pomoc
Krystian Wydro

Krystian Wydro Motion Designer

Temat: Statement must appear within on handler

aby wykonac akcje na buttonie forma zapisu powinna wygladac tak:
on (press) {
test._visible = true
}
Krystian Wydro

Krystian Wydro Motion Designer

Temat: Statement must appear within on handler

eh za szybko mi sie cos kliknelo mialo byc jeszcze ze jezeli chce wykorzystac swoja forme zapisu to nie powinnas kodu wprowadzac na button tylko do klatki :D i wtedy bedzie dzialac :D
Tomasz Kacała

Tomasz Kacała E-Learning /
Internet /
Multimedia

Temat: Statement must appear within on handler

Funkcja jaką przedstawiłaś będzie działać gdy umieścisz ją w głównej linii czasu, akcja prosto z przycisku tak jak jak napisał kolega wyżej;)
Piotr Mederak

Piotr Mederak Development Team
Leader

Temat: Statement must appear within on handler

oczywiscie tylko do wersji flash 8 w dol. obecnie nie ma juz mozliwosci umieszczenia akcji bezposrednio na elementach a jedynie na timeline.
Edyta Floras

Edyta Floras Trener on-line /
Konsultant ds.
marketingu

Temat: Statement must appear within on handler

i wszystko jasne dziękuję - działa

mam natomiast jeszcze jedno pytanie
spotkałam sie z kodem następującej treści

onClipEvent(load)
{
Math.Digits = function (value)
{

var __reg1 = value;
return __reg1 >= 10 ? __reg1 : "0" + __reg1;
}

}

i nigdzie nie mogę odszukać właściwości Digit
znalazłam gdzieś wzmiankę, że można w czasie pisania kodu stworzyć właściwość ( nie deklarując jej w klasie i będzie ona udostępniała swoją zawartość) - jednak nijak nie mogę rozczytać tego kodu

będę wdzięczna za pomoc
Kuba Regucki

Kuba Regucki IT Team Leader

Temat: Statement must appear within on handler

Właśnie w tym miejscu (onLoad) tworzysz własńą funkcję Digits w klasie Math.

Używasz tego jak zwykłej funkcji z klasy Math:
var s:String=Math.Digits(7);

A zapis jest równoznaczny z:

Math.Digits = function (value){
if(value>=10) return value;
else return "0" + value;
}

lub

Math.Digits = function (value){
if(value<10) value="0"+value;
return value;
}

... tyle, że bardziej spójny.

ps.
var wartosc=(warunek)?wynik jesli true:wynik jesli false;
;)Kuba R. edytował(a) ten post dnia 13.02.08 o godzinie 13:25
Edyta Floras

Edyta Floras Trener on-line /
Konsultant ds.
marketingu

Temat: Statement must appear within on handler

dziękuje - zabieram się w takim razie za naukę :)
Edyta Floras

Edyta Floras Trener on-line /
Konsultant ds.
marketingu

Temat: Statement must appear within on handler

niby na to samo kopyto robię - mój zapis

Math.Test = function (zmienna) {
if (zmienna<10) zmienna = "0" + zmienna;
trace(zmienna);
}
Math.Test ("koza");

a i tak są błędy w postaci

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: There is no property with the name 'Test'.
Math.Test = function (zmienna) {

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 5: There is no method with the name 'Test'.
Math.Test ("koza");

Total ActionScript Errors: 2 Reported Errors: 2

czy może mi ktoś wyjaśnić dosadnie jak to jest z deklarowaniem właściwości czy metod "w locie" ?!

z góry dziękuję
Łukasz A.

Łukasz A. Motion designer &
Interaction
developer,
lukaszadamczyk.pl

Temat: Statement must appear within on handler

Kod który podałaś wcześniej (Math.Digits) mógł działać pod AS1, kod który ostatnio napisałas (Math.Test) również może działac tylko pod AS1 ale pewnie testowałas go pod AS2 i stad te błedy.

Od wersji AS2 wszystko opiera sie na klasach dlatego też aby "dołożyć" jakas własciwosc czy metode do danej klasy (np Math która jest klasa wbudowana w flash player) trzeba napisać sobie nowa klase dziedziczącą po klasie do której chcemy "dołożyć" metode czy też właściowść. Słowo dołozyć pisze w cudzymsłowiu z tego wzgledu ze tak naprawde nie dokładamy tych nowych metod i właściwość do super klasy a jedynie dostajemy od niej dostęp do jej wbudowanych metod i własciwosci... ;)

Poniewaz mysle ze moj opis moze byc nieco zagmatwany to popre to mini przykładem.

Założmy ze chcesz miec metode przeliczajaca stopnie do radianow w klasie ktora rowniez mozesz uzywac jako klase Math czyli masz dostep do jej wszystki metod i własciwości (floor, ceil, PI itd.)

Wiec piszemy taka mini klase:

class Math2 extends Math {

public static function degreesToRadians (deg:Number):Number {
return (deg / 180 * PI);
}
}

I testujemy:

trace(Math2.degreesToRadians(20)); //0.3490...
trace(Math2.floor(2.121)); //2 <- jak widzisz tej metody nie definiowalismy w klasie Math2 ale przez to ze dziedziczy po Math mamy do niej dostep.Łukasz Adamczyk edytował(a) ten post dnia 22.02.08 o godzinie 12:15
Edyta Floras

Edyta Floras Trener on-line /
Konsultant ds.
marketingu

Temat: Statement must appear within on handler

Zrobiłam tak
stworzyłam dwa pliki w jednym katalogu
w pierwszym

wpisałam

class Math2 extends Math {

public static function degreesToRadians (deg:Number):Number {
return (deg / 180 * PI);
}
}

a w drugim

#include "skrypt.as"
trace(Math2.degreesToRadians(20));
trace(Math2.floor(2.121));

po uruchomieniu pokazuje mi się komunikat
**Error** C:\Documents and Settings\bany\Pulpit\test\skrypt.as: Line 1: Classes may only be defined in external ActionScript 2.0 class scripts.
class Math2 extends Math {

;/
Łukasz A.

Łukasz A. Motion designer &
Interaction
developer,
lukaszadamczyk.pl

Temat: Statement must appear within on handler

Klase

class Math2 extends Math {

public static function degreesToRadians (deg:Number):Number {
return (deg / 180 * PI);
}
}

Zapisujesz w oddzielnym pliku *.as o nazwie Math2.as (NazwaKlasy.as dokladnie taka jak definiujesz swoja nazwe klasy (class Math2...))

Zapisz ja w tym samym katalogu co bedzie Twoj plik *.fla (moze byc w innym ale wtedy trzeba zdefniowac adres tzw "paczki" ale narazie zeby nie motac - zrob tak jak pisze) w ktorym beda instrukcje wywołujace czy tez sprawdzajace metode tej ze klasy czyli

trace(Math2.degreesToRadians(20));
trace(Math2.floor(2.121));

Podusmowujac

Tworzysz plik Math2.as -> Tworzysz plik *.fla (w tym samym katalogu co *.as) -> w 1 klatce dajesz trace(Math2... )

I zapomnij o #include i zastap go w głowie innym ciekawym słowem import - ktory przyda Ci sie przy "paczkach" o ktorych wczesniej wspomniałem.
Edyta Floras

Edyta Floras Trener on-line /
Konsultant ds.
marketingu

Temat: Statement must appear within on handler

super- działa
zaczyna mieć to wszystko ręce i nogi
dziękuję :)

Następna dyskusja:

Conference: EU-funded proje...




Wyślij zaproszenie do