PDA

Volledige versie bekijken : Drag wordt raar geplaats en meer.


refresh
%Europe/Berlin %586 %2006, 15:04
Goeden dag,

Ik ben al eventjes bezig met een ontwerp voor mijn portfolio maar stuit op wat probleempjes.

In de venstertjes komt straks allemaal content. Het is de bedoeling dat je alles straks kan verplaatsen naast elkaar zetten vergroten e.d.

Doormiddel van een loopje worden alle vensters getekend . En wordt er later een afbeelding ingeladen.

var create = this.createEmptyMovieClip(naam, loopmaal-i);

Het punt is nu als ik er een startDrag(create) opmaak dan verplaatst die perfect.

En als ik er een startDrag(this) opmaak dan dragt die hem een half scherm van je muis verweiderd.

En als ik trace hebben we de volgende uitkomsten:

trace(create) = undefined
trace(this) = _level0.raam1

Ik snap er dus geen drol van dat die de drag verkeerd plaats. En dat hij create zodoende niet meer herkent. Hier het swfje

Het is een onrelease drag . En dan even met je muis naar links boven bewegen.

swifje (http://refresh.sohosted.com/flashfocus.html)

En hier de fla

Fla.rar (http://refresh.sohosted.com/refreshport.rar)

En hier de code gewoon


loopmaal = 20;
// aantal kaders
_global.verg = 5;
//vergroting factor rollover
beginx = 120;
//begin x positie (tekenen)
beginy = 200;
//begin y positie (tekenen)
hoog = 165;
//begin hoogte kader
breed = 275;
//begin breedte kader
//moviclip lader object
var mcl:MovieClipLoader = new MovieClipLoader();
var mclobj:Object = new Object();
mcl.addListener(mclobj);
mclobj.onLoadInit = function(targetMC) {
targetMC._width = breed;
targetMC._height = hoog;
targetMC._x = beginx;
targetMC._y = beginy;
};
//einde movieclip lader object
for (i=1; i<=loopmaal; i++) {
naam = "raam"+i;
//naam nieuwe mc
var create = this.createEmptyMovieClip(naam, loopmaal-i);
trace(create)
//kader tekenen :
with (create) {
moveTo(beginx, beginy);
beginFill(0xFFFFFF);
lineStyle(3, 0xCCCCCC);
lineTo(beginx+breed, beginy);
lineTo(beginx+breed, beginy+hoog);
lineTo(beginx, beginy+hoog);
lineTo(beginx, beginy);
endFill();
// einde kader tekenen
//plaatje inladen in nieuwe mc
plaatje = i+".jpg";
var holder = createEmptyMovieClip("holder"+i, i);
naam = i+".jpg";
mcl.loadClip(naam, holder);
//einde plaatjes inladen
//rollover function




create.onRollOver = function() {

_global.huidig = this;
_root.getsize();
_root.sizer();
}
create.onRollOut = function() {

_global.huidigout = this;
_root.sizeout();
}


//einde rollover function
//klik functie


create.onPress = function(){
//_global.huidigklik = create;
//_root.klik();
//startDrag(create)
}
create.onRelease = function(){
trace(this);
trace(create)
startDrag(this)
}






}
//x en y cordinaten berekenen
getal1 = 0.8;
//bochtfactor y
getal2 = 0.8;
//bochtfactor x
create._y = (-10+(getal1*i))*(-10+(getal1*i))-40;
create._x = (2+(getal2*i))*(2+(getal2*i))-10;
// hoogde en breedte berekenen
mvp = 70;
//max aantal procent kleiner
create._width = (1-(((mvp/100)/loopmaal)*i))*breed;
create._height = (1-(((mvp/100)/loopmaal)*i))*hoog;


}
//function get size
function getsize(){
raamx = huidig._x
raamy = huidig._y
raamh = getProperty(huidig, _height);
raamw = getProperty(huidig, _width);
}
//mouse over vergroting
function sizer() {
huidig._width = (1+verg/100)*raamw;
huidig._height = (1+verg/100)*raamh;

}
//mouse rollout terug naar grote
function sizeout() {

/*sz_br = getProperty(huidigout, _width);
sz_ho = getProperty(huidigout, _height);
huidigout._width = (1-verg/100)*sz_br;
huidigout._height = (1-verg/100)*sz_ho;*/
huidigout._width = raamw
huidigout._height = raamh

}


Ik hoop dat jullie mij even opweg kunnen helpen :D

preat
%Europe/Berlin %590 %2006, 15:09
create.onPress = function(){
this.startDrag();
}
create.onRelease = function(){
this.stopDrag();
}

zo bedoel je? o_0

refresh
%Europe/Berlin %592 %2006, 15:13
Nee dat is het probleem niet. Had even geen zin een stopdrag erbij te maken. Maar als als destart drag dus begind. Is die een eind van de muis verweiderd. Anders moet je even de .swf proberen ! :)

FredHeusschen
%Europe/Berlin %643 %2006, 16:26
staat de loch mouse position van de startDrag op true??
dan positioneert ie de mc altijd aan de positie van de muis.
standaard staat ie op false geloof ik.


startDraga(this, false);

psychogene
%Europe/Berlin %646 %2006, 16:30
gebruik gewoon:

startdrag()

in plaats van:

startdrag(this)

psy.

Ben met ongeveer hetzelfde bezig.
Maar werk via klassen.
Dat werkt veel overzichtelijker, en zal veel problemen vermijden.

link (http://www.poeliwoeli.be/polaroid/)

theFlashWizard
%Europe/Berlin %646 %2006, 16:30
als je startDrag in flash help opzoekt kun je zien dat je hem een paar parameters kan meegeven, bijv lockRoot. Hiermee kan je bepalen of hij wel of niet altijd vanaf het middelpunt van de mc verslepen wordt.
Wanneer je dit niet bepaalt staat hij standaart op true.
http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary568.html

refresh
%Europe/Berlin %737 %2006, 18:41
Hey allemaal hardstikke bedankt! :D

Ik zal het inderdaad beter in classes gaan doen. Vanavond dat hoofdstuk maar weer even openslaan !

Nu heb ik nog eigenlijk nog een probleempje waar ik al een tijd over zit te piekeren.

In het volgende stuk script heb ik de drag functie vervangen door een klik functie. Waar die dus de movie clip duplicate en ergens in het midden neerzet. Maar hij duplicate de movie clip die erin staat niet mee (of het plaatje)

De functie waar die heen gaat met klikken vind je helemaal onderaan.



loopmaal = 20;
// aantal kaders
_global.verg = 5;
//vergroting factor rollover
beginx = 120;
//begin x positie (tekenen)
beginy = 200;
//begin y positie (tekenen)
hoog = 165;
//begin hoogte kader
breed = 275;
//begin breedte kader
//moviclip lader object
var mcl:MovieClipLoader = new MovieClipLoader();
var mclobj:Object = new Object();
mcl.addListener(mclobj);
mclobj.onLoadInit = function(targetMC) {
targetMC._width = breed;
targetMC._height = hoog;
targetMC._x = beginx;
targetMC._y = beginy;
};
//einde movieclip lader object
for (i=1; i<=loopmaal; i++) {
naam = "raam"+i;
//naam nieuwe mc
var create = this.createEmptyMovieClip(naam, loopmaal-i);
//kader tekenen :
with (create) {
moveTo(beginx, beginy);
beginFill(0xFFFFFF);
lineStyle(3, 0xCCCCCC);
lineTo(beginx+breed, beginy);
lineTo(beginx+breed, beginy+hoog);
lineTo(beginx, beginy+hoog);
lineTo(beginx, beginy);
endFill();
// einde kader tekenen
//plaatje inladen in nieuwe mc
plaatje = i+".jpg";
var holder = createEmptyMovieClip("holder"+i, i);
naam = i+".jpg";
mcl.loadClip(naam, holder);
//einde plaatjes inladen
//rollover function




create.onRollOver = function() {

_global.huidig = this;
_root.getsize();
_root.sizer();
}
create.onRollOut = function() {

_global.huidigout = this;
_root.sizeout();
}


//einde rollover function
//klik functie


create.onPress = function(){
_global.huidigklik = _root.create
_root.klik();

}






}
//x en y cordinaten berekenen
getal1 = 0.8;
//bochtfactor y
getal2 = 0.8;
//bochtfactor x
create._y = (-10+(getal1*i))*(-10+(getal1*i))-40;
create._x = (2+(getal2*i))*(2+(getal2*i))-10;
// hoogde en breedte berekenen
mvp = 70;
//max aantal procent kleiner
create._width = (1-(((mvp/100)/loopmaal)*i))*breed;
create._height = (1-(((mvp/100)/loopmaal)*i))*hoog;


}
//function get size
function getsize(){
raamx = huidig._x
raamy = huidig._y
raamh = getProperty(huidig, _height);
raamw = getProperty(huidig, _width);
}
//mouse over vergroting
function sizer() {
huidig._width = (1+verg/100)*raamw;
huidig._height = (1+verg/100)*raamh;

}
//mouse rollout terug naar grote
function sizeout() {

/*sz_br = getProperty(huidigout, _width);
sz_ho = getProperty(huidigout, _height);
huidigout._width = (1-verg/100)*sz_br;
huidigout._height = (1-verg/100)*sz_ho;*/
huidigout._width = raamw
huidigout._height = raamh

}

function klik (){

removeMovieClip(contentvieuw)


duplicateMovieClip (huidigklik, "contentvieuw", this.getNextHighestDepth())
with (contentvieuw){
_x = 200
_y = -100
_width = 275
_height = 165


}}




Hartelijk dank ::)

theFlashWizard
%Europe/Berlin %768 %2006, 19:26
helaas kunnen plaatjes/swf's die je ingeladen hebt in een mc niet worden mee gedubliseert. 1nigste oplossing is opnieuw inladen of 2x van te voren inladen.
Volgens mij wordt dit vreemde probleem opgelost in flash9.