Volledige versie bekijken : Drag & Drop Interface problemen
jlbloem
%Europe/Berlin %820 %2007, 20:41
Hallo allemaal,
Lang niet meer geweest hier, zeg!
Geïnspireerd door een aantal fimpjes van de MultiTouch apparaten van Microsoft, heb ik
het plan om mijn bedrijfswebsite een beetje op die manier te doen.
De menuitems zijn een soort 'polaroids' die je vrij kan slepen en gebruiken, met buttons erin.
Actionscript 3.0 waag ik me nog niet aan, aangezien AS2 voor mij al erg lastig is. Op dit moment loopt ik op het volgende al vast:
Ik heb in mijn movie, een MC in de vorm van een polaroid. Deze movieclip heeft de volgende actions:
on (press) {_root.content_item_1.startDrag();}
on (release) {_root.content_item_1.stopDrag();
}
Ik weet dat dit erg basic is, maar in principe werkt het wel. Maar; zodra ik een button toevoeg in deze draggable movieclip, werkt deze button niet meer. Hij reageert niet op
mouseovers, nog op de on(release) acties.
Enig idee hoe ik dit moet aanpakken? Wellicht helemaal anders?
Ik hoop dat het een beetje duidelijk is, alvast bedankt voor een reactie!
mateo)
%Europe/Berlin %983 %2007, 00:36
basic oplossing: leg een movieclip met daarin een vierkant ter grootte van je polaroid onder je buttons en geef die movieclip een alpha van 0 en zet daar je actions op.
Erwinzzz
%Europe/Berlin %298 %2007, 08:09
Dat is inderdaad een oplossing, maar netter is het om via AS toch te doen. Je kan daar hitTest voor gebruiken. Je voert als het ware een hitTest uit met de muis:
item1.onRelease = function(){
this.stopDrag();
}
item1.onPress = function(){
this.startDrag();
}
item1.button1.onMouseDown = function(){
if(this.hitTest(_root._xmouse,_root._ymouse,true)) {
trace("click!");
}
}
jlbloem
%Europe/Berlin %378 %2007, 10:04
Bedankt! Die laatste oplossing is wel cleaner inderdaad, spreekt me wel aan. En het is niet eens helemaal abracadabra
Ik ga ze beiden even proberen, super bedankt!
jlbloem
%Europe/Berlin %382 %2007, 10:10
item1.onRelease = function(){
this.stopDrag();
}
item1.onPress = function(){
this.startDrag();
}
item1.button1.onMouseDown = function(){
if(this.hitTest(_root._xmouse,_root._ymouse,true)) {
trace("click!");
}
}
Dit krijg ik niet helemaal werkend; het draggen werkt wel, maar de button doet nog steeds niks. Ik de button wel de instance name 'button1' gegeven, dus daar kan het niet aan liggen.
Ik neem aan dat deze actions gewoon in een frame geplaatst moeten worden? Dan werkt het draggen dus wel, maar de button doet niets.
Dit heb ik ook geprobeerd (in frame twee in 'item1' verandert het vlak van kleur als testje).
item1.onRelease = function(){
this.stopDrag();
}
item1.onPress = function(){
this.startDrag();
}
item1.button1.onMouseDown = function(){
if(this.hitTest(_root._xmouse,_root._ymouse,true)) {
trace(item1.gotoAndPlay(2););
}
}
Ook op deze manier gebeurt er nog steeds niets wanneer de button wordt ingedrukt.
jlbloem
%Europe/Berlin %384 %2007, 10:13
De eerste oplossing met een tweede vlak met alpha 0% werkt overigens wel, maar dat is wat beholpen inderdaad.
Erwinzzz
%Europe/Berlin %732 %2007, 18:34
Hmm.. Probeer dit eens?
item1.onRelease = function(){
this.stopDrag();
}
item1.onPress = function(){
this.startDrag();
}
this.onMouseDown = function(){
if(item1.button1.hitTest(_root._xmouse,_root._ymou se,true)) {
trace("item1.button1 geklikt!");
}
}
Edit: Ik heb het maar even getest, maar beide scripts moeten werken (dat doen ze bij mij wel namelijk). Check even of je je instancenames etc goed hebt ingevuld en goed hebt aangepast in het script...
jlbloem
%Europe/Berlin %773 %2007, 19:33
Ik heb het geprobeerd, maar er gebeurt nog steeds niets wanneer ik op de button klik.
Ik heb jouw suggestie achter trace( gebruikt, met/zonder op de button een gotoAndPlay actie en onderstaande ook ingevuld, beide keren gebeurt er niets.
item1.onRelease = function(){
this.stopDrag();
}
item1.onPress = function(){
this.startDrag();
}
this.onMouseDown = function(){
if(item1.button1.hitTest(_root._xmouse,_root._ymou se,true)) {
trace("item1.button1.gotoAndPlay(2);");
}
}
Voor het gemak maar even het .fla-tje erbij gedaan, misschien dat je direct ziet wat ik verkeerd doe.
Nogmaals bedankt voor alle hulp zover!
Erwinzzz
%Europe/Berlin %793 %2007, 20:02
Ik kan je .fla niet openen, kheb geen cs3.. Wat geeft dit volgende script in je output venster, dat zal een hoop duidelijk moeten maken:
trace(item1);
trace(item1.button1);
trace("___________________________");
item1.onRelease = function(){
this.stopDrag();
}
item1.onPress = function(){
this.startDrag();
}
this.onMouseDown = function(){
trace("--onMouseDown Event--");
if(item1.button1.hitTest(_root._xmouse,_root._ymou se,true)) {
trace("hit");
}
}
jlbloem
%Europe/Berlin %805 %2007, 20:20
Het volgende:
_level0.item1
_level0.item1.button1
___________________________
Ik heb het idee dat flash de MC, item1, compleet 'plat' en clickable maakt, net zoals het feit dat een button in een button niet werkt.
Ik neem trouwens aan dat dit hele script in 1 frame geplaatst moet worden?
item1.onRelease = function(){
this.stopDrag();
}
item1.onPress = function(){
this.startDrag();
}
this.onMouseDown = function(){
if(item1.button1.hitTest(_root._xmouse,_root._ymou se,true)) {
trace("item1.button1.gotoAndPlay(2);");
}
}
jlbloem
%Europe/Berlin %900 %2007, 22:36
In ieder geval bedankt voor de hulp, maar ik ben maar gewoon opnieuw begonnen, in AS3, door de Help door te lezen, en wat te experimenteren met code en blokjes. Met listeners werkt het eigenlijk veel beter allemaal, terwijl ik daar vorige week nog gigantisch tegen op keer. In AS2 heb ik me nooit heel erg verdiept, dus lijkt het me een goed plan om me i.p.v. in AS2 verder te verdiepen, opnieuw te beginnen in AS3.
Ik ben benieuwd of het zo veel makkelijker gaat ;) .
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.