syllaz
%Europe/Berlin %445 %2005, 11:41
Weet iemand of het mogelijk is om met AS de stroke style te setten als je met de lineStyle/curveTo methodes werkt?
Ik wil namelijk dynamisch stippellijntjes kunnen tekenen, maar kan niks terug vinden in de documentatie. Alleen met JSFL, maar daar heb ik niks aan....
Thanx!
dj_kris
%Europe/Berlin %453 %2005, 11:52
o, dat had ik gister nog gezien, ff denken op welke site stond dat ook al weer!
Laiverd
%Europe/Berlin %456 %2005, 11:57
Dat zal vast kunnen maar wordt denk ik erg gecompliceerd. Wat je volgens mij moet doen is iedere keer een heel kort lijntje tekenen. Je zuilt dus moeten uitrekenen waar het volgende lijntje moet beginnen en waar het moet eindigen, en dat op zo'n manier dat begin en einde van de lijn elkaar ook nog op een nette manier beginnen. E.e.a. kan dan in een for/while loop of in een frameloop m.b.v. setInetrval of onEnterFrame. In een frameloop zie je dan hoe de lijn wordt getekend, in een for/while loop niet.
John
syllaz
%Europe/Berlin %547 %2005, 14:08
Dat is een interessante workaround voor mijn probleem :)
Probleem is dat ik niet zoveel tijd heb voor deze klus om dit te realiseren.
Ik baal ervan dat macromedia zoiets simpels niet geimplementeerd heeft in flash!
Anyway, ik ga ff spelen met loops en kijken of het lukt .. zo ja, dan post ik de code wel.
Alvast bedankt!
Laiverd
%Europe/Berlin %694 %2005, 17:40
Ik kwam net dit nog tegen: http://senocular.com/flash/source.php?id=0.159
John
Mediamonkey
%Europe/Berlin %791 %2005, 19:59
Hier heb je een voorbeeldscript. Hij is niet erg netjes en in AS1 geschreven, maar hij werkt als een ****!
this.setShapeSelectorClass = function() {
delete this.setShapeSelectorClass;
var ShapeSelector = function () {
this.shift = this.shift;
this.points_array = [];
ASSetPropFlags(this, "shift", 1, 1);
};
// create (static)
ShapeSelector.create = function(thisObject, name, depth, initObject) {
var mc = thisObject.createEmptyMovieClip(name, depth);
mc.__proto__ = this.prototype;
for (var i in initObject) {
mc[i] = initObject[i];
}
this.call(mc);
return mc;
};
var tmp = ShapeSelector.prototype=new MovieClip();
// private
tmp.shift = 0;
// properties. defaults
tmp.closed = true;
tmp.gap = 3;
tmp.line = 2;
tmp.speed = 1;
tmp.width = 0;
tmp.height = 0;
tmp.thickness = 1;
tmp.color = 0;
tmp.alpha = 100;
tmp.closeShape = function() {
this.closed = true;
};
tmp.addPoint = function(x, y) {
if (this.closed) {
this.closed = false;
this.points_array = [];
}
this.points_array.push({_x:x, _y:y});
};
// redraw
tmp.onEnterFrame = function() {
this.clear(), this.lineStyle(this.thickness, this.color, this.alpha);
var shift = this.shift += this.speed;
var arr = this.points_array;
var len = arr.length;
if (len<2) {
return;
}
for (var i = 1; i<len; i++) {
shift = dashFromTo(this, arr[i-1]._x, arr[i-1]._y, arr[i]._x, arr[i]._y, shift) || 0;
}
if (this.closed) {
dashFromTo(this, arr[len-1]._x, arr[len-1]._y, arr[0]._x, arr[0]._y, shift) || 0;
}
};
// private: shifted dashed line drawing
var dashFromTo = function (mc, sx, sy, ex, ey, shift) {
var line = mc.line, gap = mc.gap;
var dx = ex-sx, dy = ey-sy;
var dist = Math.sqrt(dx*dx+dy*dy);
var sin = dy/dist, cos = dx/dist;
var poz = 0, step = (line+gap);
shift = (shift%step+step)%step;
mc.moveTo(sx, sy);
if (shift) {
if (shift>gap) {
poz = (shift-gap);
if (poz>dist) {
mc.lineTo(dist*cos+sx, dist*sin+sy);
return poz+gap-dist;
}
mc.lineTo(poz*cos+sx, poz*sin+sy);
poz += gap;
} else {
poz = shift;
if (poz>dist) {
mc.moveTo(dist*cos+sx, dist*sin+sy);
return poz-dist;
}
}
mc.moveTo(poz*cos+sx, poz*sin+sy);
}
while (Math.abs(poz)<dist) {
poz += line;
if (poz>dist) {
mc.lineTo(dist*cos+sx, dist*sin+sy);
return poz+gap-dist;
}
mc.lineTo(poz*cos+sx, poz*sin+sy);
poz += gap;
if (poz>dist) {
mc.moveTo(dist*cos+sx, dist*sin+sy);
return poz-dist;
}
mc.moveTo(poz*cos+sx, poz*sin+sy);
}
return poz-dist;
};
_global.org = _global.org || {};
_global.org.dembicki = _global.org.dembicki || {};
_global.org.dembicki.ShapeSelector = ShapeSelector;
};
this.setShapeSelectorClass();
/////////////////////////////////////////////////////////////////////////////////////////////
// USAGE EXAMPLE
// (AS1 and AS2 compatible)
/////////////////////////////////////////////////////////////////////////////////////////////
// import org.dembicki.ShapeSelector;
trace("Click any times\nand press any key to close the shape");
org.dembicki.ShapeSelector.create(this, "default_outline_mc", 0, {_x:sx, _y:sy});
this.onMouseUp = function() {
this.default_outline_mc.addPoint(this._xmouse, this._ymouse);
};
Key.addListener(this);
this.onKeyUp = function() {
this.default_outline_mc.closeShape();
};
// bug: when the beginpoint is the same as the endpoint, a line from <0,0> appears
this.onMouseDown = function() {
this.onMouseMove = function() {
this.default_outline_mc.addPoint(this._xmouse, this._ymouse);
};
this.onMouseUp = function() {
this.default_outline_mc.closeShape();
delete this.onMouseMove;
delete this.onMouseUp;
};
};
Mediamonkey
%Europe/Berlin %791 %2005, 20:00
heey, censuur? sinds wanneer is **** een lelijk woord? een vrouwenborst is een van de mooiste dingen in het leven!
Dauntless
%Europe/Berlin %860 %2005, 21:38
Ik denk omdat je er ook naar kunt verwijzen als 'borst' en dan komt '****' nogal onrespectvol over...
syllaz
%Europe/Berlin %502 %2005, 13:03
LOL, censuur op flashfocus! :D
Laiverd en MediaMonkey thanx voor jullie input ... dat zijn tenminste scripts waar ik wat mee kan. Ik ga ermee aan de slag.
theFlashWizard
%Europe/Berlin %522 %2005, 13:32
was niemand deze nog tegegekome:
http://www.macromedia.com/devnet/mx/flash/articles/adv_draw_methods.html
? :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.