Volledige versie bekijken : scalen met behulp van knop?
houtwurm
%Europe/Berlin %643 %2005, 16:26
Hoe doe ik dit?
Ik heb een rechthoekje.
Dit wil ik kunnen verplaatsen via een knopje links onder
én
ik wil hem kunnen verschalen via een knopje rechts boven.
Het verplaatsen lukt prima, maar hoe kan ik hem nu verschalen? :confused:
http://www.houtwurm.net/images/schalen.png
Nowan
%Europe/Berlin %663 %2005, 16:55
in eerste instantie ga ik je geen kant en klare code geven.
ik zal je het principe uitleggen volgens welke je de code kan opstellen:
als je dat pijltje sleept beweegt de muis [x en y].
als de positie van de muis groter is dan zijn originele positie, vergroot het vierkant evenveel als de afstand die de muis heeft afgelegd.
ik hoop dat je hier al wat mee kan, als het echt niet lukt stellen we wel wat code op voor je.
theFlashWizard
%Europe/Berlin %696 %2005, 17:43
bij een onRelease op het scale knopje start je een onEnterFrame (zodat het vaker wordt gedaan) en je maakt de horizontale afstand van je sleep knopje naar je scale knopje gelijk aan de width en zo ook de verticale afstand gelijk aan de height van het blok..
Nowan
%Europe/Berlin %721 %2005, 18:18
bij een onRelease op het scale knopje start je een onEnterFrame (zodat het vaker wordt gedaan) en je maakt de horizontale afstand van je sleep knopje naar je scale knopje gelijk aan de width en zo ook de verticale afstand gelijk aan de height van het blok..
mijn uitleg dus, maar dan iets simpeler :D
theFlashWizard
%Europe/Berlin %724 %2005, 18:22
nee nee.. jij had iets bedacht met afgelegde afstand.. ;)
zijn keuze wat hij gebruikt natuurlijk..
Nowan
%Europe/Berlin %726 %2005, 18:26
ik had iets met de afstand van de muis, wat dus ook de afstad van da knopke is :p
maar het knopke is gemakkelijker :)
theFlashWizard
%Europe/Berlin %741 %2005, 18:47
ligt et nou aan mij of wil jij altijd het laatste woord hebbe.. :D
Nowan
%Europe/Berlin %760 %2005, 19:14
wie? ik? :D
mja, ik discussieer graag :p
Ni op letten :p
houtwurm
%Europe/Berlin %760 %2005, 19:14
ok, heren, ik snap het principe.
Alleen de onEnterFrame functie daar snap ik geen hol van...
Dat is nogal een propleempje geloof ik...
Hij werkt nl. wel al, alleen wordt de grootte van het vierkantje pas aangepast bij de on (release)...
ik heb nu de volgende code:
on (press, dragOut) {
startDrag("");
x_size = _x - _parent.header._x;
y_size = (_y - _parent.header._y)*-1;
_parent.header._width = x_size;
_parent.header._height = y_size;
}
on (release) {
stopDrag();
x_size = _x - _parent.header._x;
y_size = (_y - _parent.header._y)*-1;
_parent.header._width = x_size;
_parent.header._height = y_size;
}
help please...
Nowan
%Europe/Berlin %769 %2005, 19:27
wel, onEnterFrame dient om de code te doen uitveoren elke keer er in een frame wordt gegaan [ook als je stop() gebruikt blijft hij frames ingaan]
dus, door onEnterFrame te gebruiken, 'refresh' je je beeld eigenlijk een beetje,
waardoor je kan zien hoe het vierkant groter wordt :)
zet het volgende rond de on() events, misschien werkt het dan wel:
this.onEnterFrame = function()
{
// on events
};
houtwurm
%Europe/Berlin %807 %2005, 20:22
Als ik dat doe:
this.onEnterFrame = function()
{
on (press, dragOut) {
startDrag("");
x_size = Math.round(_x - _parent.header._x);
y_size = Math.round((_y - _parent.header._y)*-1);
_parent.header._width = x_size;
_parent.header._height = y_size;
}
on (release) {
stopDrag();
x_size = Math.round(_x - _parent.header._x);
y_size = Math.round((_y - _parent.header._y)*-1);
_parent.header._width = x_size;
_parent.header._height = y_size;
}
};
Dan krijg ik de fout:
Statement must appear within on handler
this.onEnterFrame = function()
Wat doe ik fout?
Nowan
%Europe/Berlin %888 %2005, 22:19
probeer dan eens:
on (press, dragOut)
{
this.onEnterFrame = function()
{ startDrag("");
x_size = Math.round(_x - _parent.header._x);
y_size = Math.round((_y - _parent.header._y)*-1);
_parent.header._width = x_size;
_parent.header._height = y_size;
};
}
Laiverd
%Europe/Berlin %899 %2005, 22:34
Wat doe ik fout?Je maakt een wat rare combinatie van een framescript en een buttonscript. Voor het verschil daartussen, zie de handleiding. Maar dat terzijde. Even een quick and dirty voorbeeld dan maar, omdat ik gek werd van het proberen aan te passen van je code ;)
1. maak een vierkant > maak er een movieclip van met het registratiepunt in de linker bovenhoek
2. Maak dit vierkant zo groot als het window in eerste instantie zou moeten zijn (bv. 100x100px)
3. Geef dit vierkant de instancename window_mc
4. Sleep datzelfde symbol uit de library naar je stage; hou het netjes en zorg dat de tweede instance van het symbool in de tweede layer staat. Geef het vierkant een andere kleur d.m.v. het properties panel en maak 'm zo groot als de knop moet zijn (bv. 10x10px)
5. Geef dit tweede vierkant (die als sleepknop gaat werken) de instancename 'resize_mc' en lijn het uit het de rechter benedenhoek van window_mc.
6. maak een derde laag aas, selecteer het eerste frame in die laag en plak het script hieronder in het actionspanel. Het commentaar wijst verder de weg.
resize_mc.onPress = function() {
// start a loop
this.onEnterFrame = function() {
// set the position (x and y) of the drag knob and make sure it's
// centered relative to the mouse
this._x = _xmouse - this._width / 2;
this._y = _ymouse - this._height / 2;
// change the width and height of the window_mc, width is defined by the
// difference between the x/y position of the mouse and the sum of the
// x position of window_mc plus the width of the knob
window_mc._width = this._x - window_mc._x + this._width;
window_mc._height = this._y - window_mc._y + this._height;
// we cannot resize to the left; the centerpoint of the window is upleft
// so we set x and y of the knob to the x and y of the window when we try
// to drag the knob to an area up left of the window
if (this._x < window_mc._x) {
this._x = window_mc._x;
window_mc._width = this._width;
}
if (this._y < window_mc._y) {
this._y = window_mc._y;
window_mc._height = this._height;
}
// smoothing ;)
updateAfterEvent();
};
};
// releasing the mouse stops the resizing
resize_mc.onRelease = resize_mc.onReleaseOutside = function () {
delete this.onEnterFrame;
};John
P.s. Knopje rechtboven mag je zelf uitzoeken ;), maar daar is met bovenstaande neem ik aan wel uit te komen. Als je iets van hierboven niet snapt, of je afvraagt 'waarom?' dan lees ik het wel weer.
2nd day
%Europe/Berlin %977 %2005, 00:27
misschien dat je hier nog iets aan hebt:
http://www.senocular.com/flash/source.php?id=0.76
Laiverd
%Europe/Berlin %979 %2005, 00:30
Bedoel je niet deze? http://www.senocular.com/flash/source.php?id=0.142
heb ik weer het wiel opnieuw zitten uitvinden ;(
2nd day
%Europe/Berlin %983 %2005, 00:35
ja dies nog veel beter ;) probleem opgelost?
2nd day
%Europe/Berlin %984 %2005, 00:37
ze zouden s een lijst met helpfull links moeten maken hier (of is ie er al? kon m zo gauw niet vinden...)
theFlashWizard
%Europe/Berlin %013 %2005, 01:19
zoek eens op het forum op AStips ;)
daar staat een rij tips en n paar goede sites :)
theFlashWizard
%Europe/Berlin %033 %2005, 01:48
sorry moest et ook ff probere:
mijn versie:
minX = 10
minY = 10
resizer.onPress = function(){
this.onMouseMove = function(){
resizer._x = _xmouse
resizer._y = _ymouse
disX = resizer._x-dragger._x
disY = 0-(resizer._y-dragger._y)
if(disX < minX) disX = minX
if(disY < minY) disY = minYa
pane._width = disX
pane._height = disY
updateAfterEvent()
}
}
resizer.onRelease = resizer.onReleaseOutside = function(){
delete this.onMouseMove;
}
dragger.onPress = function(){
this.onMouseMove = function(){
_root.window_mc._x = _root._xmouse
_root.window_mc._y = _root._ymouse
updateAfterEvent()
}
}
dragger.onRelease = resizer.onReleaseOutside = function(){
delete this.onMouseMove;
}
fla == zip == bijlage ;)
ik heb et naar mijn idee net wat simpeler gedaan en omdat ik eerst de doelgroote nakijk als variabele is het volgens mij ook minder CPU intensief..
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.