Volledige versie bekijken : wil geen onClipEvent
datbenik
%Europe/Berlin %696 %2005, 16:42
De onderstaande code heb ik op een Symbol (movie clip) toegepast zodat als ik er op klik het voorwerp zich gaat vergroten. Ik krijg de volgende fout:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 4: Statement must appear within on/onClipEvent handler
function klik(){
Total ActionScript Errors: 1 Reported Errors: 1
maar ik wil helemaal geen onClipEvent... Hij moet het gewoon doen als ik op de symbol klik (loslaat).
De "onderstaande code":
on(release){
klik();
}
function klik(){
function doe(){
this._xscale = this._xscale+5;
}
setInterval(doe,100);
}
umbrella
%Europe/Berlin %712 %2005, 17:06
on(release) { <---- werkt alleen op een button
Fatty Owl
%Europe/Berlin %714 %2005, 17:08
het ligt aan de functie, die moet je op een frame zetten, niet op een button :)
en as zet je tussen [as] tags, niet tussen [php] tags
theFlashWizard
%Europe/Berlin %715 %2005, 17:09
je kan ook beter op frame scripts werken.. (script op keyframes dus)
probeer dit bijv is op een frame script neer te zetten:
instancename.onRelease = function(){
klik();
}
function klik(){
function doe(){
this._xscale = this._xscale+5;
}
setInterval(doe,100);
}
al is dit eigenlijk best wel een onlogisch script.. dit doet hetzelfde:
instancename.onRelease = function(){
setInterval(doe,100);
}
function doe(){
this._xscale = this._xscale+5;
}
wel ff dat instancename vervangen voor de juiste instancename he :)
datbenik
%Europe/Berlin %719 %2005, 17:15
Bedankt!
Ik bedoelde trouwens:
instancename.onRelease = function(){
setInterval(doe,100);
}
function doe(){
instancename._xscale = instancename._xscale+5;
}
datbenik
%Europe/Berlin %723 %2005, 17:21
Nog even een kort vraagje:
hoe zorg ik ervoor dat de functie niet oneindig herhaald wordt. Na 10 keer mag ie wel stoppen. Dus setInterval(functienaam,tijd) is niet voldoende.
Jordy
%Europe/Berlin %728 %2005, 17:28
dan moet je dit dus doen:
instancename.onRelease = function() {
for(var i:Number = 1;i<=10;++i) {
doe();
}
function doe(){
instancename._xscale = instancename._xscale+5;
}
datbenik
%Europe/Berlin %738 %2005, 17:43
Maar dan zit er geen tijd tussen...
Jordy
%Europe/Berlin %745 %2005, 17:53
dan moet je dit dus doen:
instancename.onRelease = function() {
for(var i:Number = 1;i<=10;++i) {
setInterval(doe,100);
}
function doe(){
instancename._xscale = instancename._xscale+5;
}
datbenik
%Europe/Berlin %748 %2005, 17:58
Dat werkt ook niet.
Dat script herhaald 10 keer de setInterval. De setInterval gaat na de laatste keer gewoon oneindig door.
Kan het misschien ook met de setTimeOut?
Flasher
%Europe/Berlin %749 %2005, 17:59
Je moet in de interval kijken of hij 'klaar' is, en dan haal je hem weg met clearInterval():
var interval:Number;
instancenaam.onRelease =function() {
clearInterval(interval);
interval = setInterval(doe, 100);
}
function doe() {
instancenaam._xscale += 5;
if(instancenaam._xscale>=150)clearInterval(interval);
}
PS je moet je movieclip natuurlijk wel een zinnige instancenaam geve:D, en ook aanpassen in het script
datbenik
%Europe/Berlin %755 %2005, 18:07
Bedankt!
PS je moet je movieclip natuurlijk wel een zinnige instancenaam geve, en ook aanpassen in het script
Ja, dat snap ik ook wel...
Gerrit55
%Europe/Berlin %782 %2005, 18:46
op je stage 2 mc's. Instancenamen: "knop" en "mc"
As op frame 1
stop()
knop.onRelease = function() {
// wat is de huidige status van je MC
mc.org = mc._xscale;
// snelheid waarmee schaalt
stap = 20;
// Actie uitvoeren op je mc
mc.onEnterFrame = function() {
if (this.org > 100) {
// mc weer verkleinen
this._xscale -= stap
this._yscale -= stap
} else {
// mc vergroten
this._xscale +=stap
this._yscale +=stap
}
// als je eindpunt bereikt is kan OEF verwijderd worden
if (this._xscale <= 100 || this._xscale >=300) delete this.onEnterFrame;
}
}
theFlashWizard
%Europe/Berlin %813 %2005, 19:31
Jordy, post alleen als je weet waar je het over hebt.. :S
iedere x als je een onRelease uitvoert dezefde functie opnieuw maken (dus niet alleen uitvoeren) slaat nergens op..
MAKR
%Europe/Berlin %833 %2005, 19:59
Dit werkt toch ook?
instancename.onRelease = function(){
setInterval(doe,100);
}
function doe(){
if (_c <= 0) {
_c += 1;
this._xscale = this._xscale+5;
}
}
ofzoiets :S
Jordy
%Europe/Berlin %843 %2005, 20:14
Jordy, post alleen als je weet waar je het over hebt.. :S
iedere x als je een onRelease uitvoert dezefde functie opnieuw maken (dus niet alleen uitvoeren) slaat nergens op..
bij jou vraag ik me echt af waarom jij uberhaupt op dit forum zit, het is een forum waar je elkaar helpt en niet van die achterlijke reacties geeft naar elkaar. Ik zie je dat wel eens vaker doen, misschien tijd om eens je reacties te veranderen? succes ermee jongen!
theFlashWizard
%Europe/Berlin %922 %2005, 22:08
ik zit op dit forum omdat ik help.. en ik snap niet dat jij weet dat ik altijd achtelijke reacties geef want ik geloof niet dat jij al mijn posts hebt gelezen..
ik wou je alleen vertellen dat je alleen moet posten wanneer je dingen redelijk zeker weet.. das alles.. ik ben hier zeker niet om mensen zomaar te gaan beledigen..
Fatty Owl
%Europe/Berlin %925 %2005, 22:12
omdat er geen ZMers zijn, en ik me verveel, bij deze: GEEN flamewars aub :)
Roenes
%Europe/Berlin %590 %2005, 14:10
omdat er geen ZMers zijn, en ik me verveel, bij deze: GEEN flamewars aub :)Dank je fatty :);)
idd elkaar niet gaan lopen afzeiken. Mensen kunnen elkaar altijd proberen te helpen en het komt wel eens voor dat je een oplossing geeft die later niet blijkt te kloppen. Dat overkomt de beste en is niets mis mee :) Je mag dus gerust commentaar geven op posts van iemand en code van anderen mag je natuurlijk verbeteren. Maar ga elkaar niet persoonlijk aanvallen :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.