Volledige versie bekijken : [BATTLE] 400 Bytes ActionScript
Fl4sh3r
%Europe/Berlin %886 %2005, 22:16
http://www.bleq.nl/~chris/pics/FlashFocus/400bytesAS_header1.png
Inleiding
Vandaag had ik een grappig scriptje gemaakt, iets wat erg lijkt op wat ik al eerder gemaakt heb, maar nu volledig in ActionScript. Ik wilde hem dit laten zien en dacht het script via MSN Messenger te sturen. Standaard kun je via MSN Messenger echter berichten van maximaal 400 karakters sturen. Na wat prutsen is het gelukt om mijn script in 400 karakters te krijgen en over MSN te zender. Dit gedaan hebbende bracht me dat op het idee hier een battle van te maken.
Opdracht
De opdracht is: maak een zo spekend mogelijke Flash movie met maar 400 bytes aan ActionScript. Zonder hierbij gebruik te maken van externe resources, MovieClips, Graphics of andere getekende objecten.
Regels
Maximaal 400 karakters, incl spaties, komma's, accolades, enters etc
Zichtbaar resultaat
Eigen werk
Einddatum: maandag 31 oktober. Einddatum nog niet definitief
Inleveren per e-mail, of in dit topic, zoals onderstaand. (AS + Movie Specs)
Met zichtbaar resultaat bedoel ik dat je niet een script maakt dat bijvoorbeeld PI op honderden decimalen uitrekent en dat ff tracet. Er moet ook in de standalone player iets gebeuren.
(19-10-2005 21:50)
De einddatum is nog niet definitief, enkel een streven. Ik zie al aardig wat scripts verschijnen hieronder. Bovendien is er geen ruimte om oneindig verbeteringen toe te passen. Als iemand graag een andere deadline wil, kom maar met een voorstel en argumenten.
Extra punten
Kleur
Animatie
Interactie
Lastigheden
Lange functienamen van Flash zelf
Veel code om uberhaupt iets te tekenen
Tips
Mijd accolades waar mogelijk
Laat puntkomma's weg waar mogelijk
Laat spaties weg waar mogelijk
Gebruik geen enters
Om te controleren of je niet te veel karakters hebt kun je het volgende redelijk eenvoudig doen:
Plak al je AS in een plain-text file. Bekijk de eigenschappen van de file, het aantal bytes mag maximaal 400 zijn.
Voorbeeld
u=50;l=100;b=4;x=50;lineStyle(0);moveTo(x,0);for(i =0;i<b;i++)curveTo(((i&1)?-u:u)+x,l/2+i*l,x,i*l+l);with(_root.createEmptyMovieClip("d",2)){_x=x;beginFill(204);i=m=5;while(i-->0)lineTo(i&1?m:m=-m,m);endFill();}d.onPress=function(){d.onEnterFram e=function(){d._x=x+Math.sin((d._y=Math.max(0,Math .min(b*l,_ymouse)))/l*Math.PI)*u/2};d.onRelease=d.onReleaseOutside=function(){d.onE nterFrame=null}}helaas gaat de [as] niet helemaal goed, hetzelfde probleem treedt op bij [code]. Hier en daar worden spaties gezet, als je deze allemaal verwijdert werkt het script.
Movie specs
Flash Player 6, ActionScript 2.0
Width: 100
Height: 400
FPS: 20
BGColor: 0xFFFFFF
De specs hoef je niet altijd te vermelden, tenzij je natuurlijk ervan verzekerd wil zijn dat iedereen je movie ziet zoals jij het bedoeld hebt (zonder je .fla online te hoeven zetten).
Bij je final inzending wel graag vermelden.
[8ball] Good Luck [8ball]
Deelnemers (22-10-2005 11:45)
Dauntless (http://www.flashfocus.nl/forum/showthread.php?p=41936#post41936)
Pimm
Roenes (http://www.flashfocus.nl/forum/showthread.php?p=41890#post41890)
Fatty Owl (http://www.flashfocus.nl/forum/showthread.php?p=42942#post42942)
Flasher (http://www.flashfocus.nl/forum/showthread.php?p=41708#post41708)
moflwm
Cowerd (http://www.flashfocus.nl/forum/showthread.php?p=42455#post42455)
mknol2000 (http://www.flashfocus.nl/forum/showthread.php?p=42634#post42634)
oh,when?
Mis je nog iets in de omschrijving, let me know (e-mail als het even kan, om dit topic ontopic te houden).
Reactie op post direct hieronder en meteen voor de rest: Ik weet van het bestaan van Messenger Plus! maar dat willen ze op mn stage niet op de PC's hebben. Back On Topic.
Ook zoek ik nog 1 a 2 mensen die willen helpen bij het beoordelen. (Eveneens e-mail ajb)
Ik heb inmiddels ook zelf Flash 8 (trial) geinstalleerd en kan dus ook Flash 8 inzendingen testen.
Dauntless
%Europe/Berlin %897 %2005, 22:32
Leuke battle, ik doe zeker mee! :).
(En download msn + eens, dan kan je 1200 chars verzenden :p)
Pimm
%Europe/Berlin %900 %2005, 22:36
Yps, lijkt me leuk, ik doe mee. Natuurlijk komt de ts weer met een overdreven gave inzending... :)
Roenes
%Europe/Berlin %959 %2005, 00:01
Eindelijk weer eens een battle die ervoor zorgt dat code niet leesbaar blijft! :D Tijd voor creatieve oplossingen!
Ik ga er ook zeker eens mee stoeien! In ieder geval tof initiatief :) En ook mooie startinzending :p
Ea.Z
%Europe/Berlin %964 %2005, 00:08
ff een opmerking voor de topicstarter...
GET A LIVE!!!:p
zot!
zo'n script!(daz positief he ;))
ik doe nie mee by the way.. kan ik nooit tegenaan...:#
Dauntless
%Europe/Berlin %964 %2005, 00:09
Mijn eerste poging:
createEmptyMovieClip("h",1);h._visible=0;h.lineStyle(1);h.moveTo(30,0);d=a =2
for (i=0;i<6.28;i+=.017)h.lineTo(Math.cos(i)*30,Math.sin(i)*3 0);
onEnterFrame = function () {x=Math.cos(0.0476*a);y=Math.sin(0.0476*a);h.dupli cateMovieClip("w"+d,d++,{_x:x*100+275,_y:y*130+200,_rotation:a,_xsc ale:x*100,_yscale:y*100});a++;d=d>200?2:d;};
Maar 'k zit nog niet tegen de 400, dus ik ga hier nog wel wat bij zetten :p. ('k Zit aan 330 [}:|] [:o)] )
Euhm, gewone standaard movie, maar zet je FPS op 35 of zo, anders gaat hij nogal traag :p.
Roenes
%Europe/Berlin %974 %2005, 00:22
Zijn er zo weinig regels, hou je je er nog niet aan DL ;) Kijk eens onderaan in flashers post ;)
Maar leuke inzending! :) Maar wat is dat een gekke manier om een rondje te tekenen :P
Dauntless
%Europe/Berlin %975 %2005, 00:25
Euhm, die movie specs bedoel je? Die zijn voor zijn voorbeeld... Die staan niet in de regels ;).
En dat is een perfect goede :D 'k Heb alleen die Math.PI / 180 er uit gezwiert :p
Je tekent en cirkel van 0 tot 2PI. Dus heb ik van nul tot 6.28 (afgerond 2PI) gedaan met sprongetjes van 2PI/360 = 0.0174532925199433 = 0.017 :p.
Fl4sh3r
%Europe/Berlin %982 %2005, 00:35
ff een opmerking voor de topicstarter...
GET A LIVE!!!:p
zot!
zo'n script!(daz positief he ;))
ik doe nie mee by the way.. kan ik nooit tegenaan...:#
Ik doe zelf natuurlijk niet mee met de battle, mijn script dient enkel als voorbeeld.
En sepcs van je movie hoef je er niet persé bij te zetten, FPS is zowiezo wel handig, width en height ook wel denk ik. Bij final inzendingen gelieve wel even vermelden, dat is wel zo handig bij het testen.
Dauntless, nice die spirograph-achtige tekening. Misschien een idee om de kleur te laten veranderen terwijl ie bezig is...
Dauntless
%Europe/Berlin %983 %2005, 00:35
Flash3r, die moviespecs zijn toch geen regel hé ?
Fatty Owl
%Europe/Berlin %601 %2005, 15:25
effe snel gemaakt om mee te doen :p createEmptyMovieClip("a",i);i++;a.lineStyle(1);a.beginFill(0xFFFFFF,30);a. lineTo(0,10);a.lineTo(10,10);a.lineTo(10,0);a.line To(0,0);s=10;b=1;onEnterFrame=function(){;_x+=s;_y +=b;if(_x<0 or _x>200){s=-s-10};if(_y<0 or _y>90){b=-b-0.5}}
hier de geformatte versie:
createEmptyMovieClip("a", i);
i++;
a.lineStyle(1);
a.beginFill(0xFFFFFF, 30);
a.lineTo(0, 10);
a.lineTo(10, 10);
a.lineTo(10, 0);
a.lineTo(0, 0);
s = 10;
b = 1;
onEnterFrame = function () {
_x += s;
_y += b;
if (_x<0 or _x>200) {
s = -s-10;
}
if (_y<0 or _y>90) {
b = -b-0.5;
}
};
specs=200x100;kleur=Rood,Geel,Blauw <-- het wordt een gewoonte :D
Flasher
%Europe/Berlin %604 %2005, 15:29
c=0;s=1;b=new flash.filters.BlurFilter(8,8,2);filters=[b];onMouseDown=function(){moveTo(_xmouse,_ymouse);on MouseMove=function(){lineStyle(s,c);lineTo(_xmouse ,_ymouse)}};onMouseUp=function(){onMouseMove=null} ;l={};l.onKeyDown=function(){if(Key.getCode()==38) s++;if(Key.getCode()==40&&s>1)s--;if(Key.getCode()==46)clear();if(Key.getCode()==67 )c=random(0xFFFFFF)};Key.addListener(l)
Een heel simpel tekenprogramma
FP8
Knoppen:
Omhoog/Omlaag: kwastgrootte+/-
Delete: maak scherm leeg
C: verander kleur (random)
Verder is het gewoon klikken/slepen
EDIT:
30 fps (ongeveer)
Als je in de Test Movie-modus zit, moet je 'Disable Keyboard Shortcuts' inschakelen
En speciaal voor Roenes (e.a.) :
c=0;
s=1;
b=new flash.filters.BlurFilter(8,8,2);
filters=[b];
onMouseDown=function(){
moveTo(_xmouse,_ymouse);
onMouseMove=function(){
lineStyle(s,c);
lineTo(_xmouse,_ymouse)
}
};
onMouseUp=function(){
onMouseMove=null
};
l={};
l.onKeyDown=function(){
if(Key.getCode()==38)s++;
if(Key.getCode()==40&&s>1)s--;
if(Key.getCode()==46)clear();
if(Key.getCode()==67)c=random(0xFFFFFF)
};
Key.addListener(l)
Voor de mensen zonder flash 8 maar met de player heb ik er ff de swf bij gedaan:
Dauntless
%Europe/Berlin %733 %2005, 18:36
Die's cool, Flash3r !!
(En ik ga er idd nog kleur bijzetten, dat was wat ik er nog mee wou doen :)).
Roenes
%Europe/Berlin %776 %2005, 19:38
Misschien iedereen even het voorbeeld van Fatty Owl volgen en ook alle code geformatteerd onder elkaar zetten. Dat leest wat makkelijker :)
Roenes
%Europe/Berlin %832 %2005, 20:59
Alvast een inzending van mij. Niet dat ik er trots op ben of zo (ik weet dat ik beter kan), maar het was meer een klein testje voor mezelf zodat ik eens die BitmapData class ging bekijken. Dit heb ik dus gedaan en dit kwam eruit:
w=h=100;y=0;col=Math.random()*0xFFFFFF;createEmpty MovieClip("m",1);bd=new flash.display.BitmapData(w,h,false,Math.random()*0 xFFFFFF);m.attachBitmap(bd,1);m.onEnterFrame=funct ion(){bd.setPixel(0,y,col);bd.scroll(1,0);if(y<h-1)y++;else{y=0;col=Math.random()*0xFFFFFF;}};
Ook nog maar de geformatte code: (autoFormat van flash is wel handig ;))
w = h = 100;
y = 0;
col = Math.random() * 0xFFFFFF;
createEmptyMovieClip("m", 1);
bd = new flash.display.BitmapData(w, h, false, Math.random() * 0xFFFFFF);
m.attachBitmap(bd, 1);
m.onEnterFrame = function()
{
bd.setPixel(0, y, col);
bd.scroll(1, 0);
if (y < h - 1)
{
y++;
}
else
{
y = 0;
col = Math.random() * 0xFFFFFF;
}
};Nogmaals: niets speciaals maar het is een begin. Ik ga nog wel eens iets moois maken maar dan niet met die ***** import dingen! Dat scheelt me alweer een heleboel karakters! Maar ik ben er iig nu achter dat die BitmapData class erg handig kan zijn! Nu nog filters ;)
//Edit
Ook de movie specs kunnen handig zijn:
movie = minimaal 100 x 100
fps = 24 of hoger
flashplayer = 8 (sorry mensen ;))
//Edit2
Code is geupdate en swf bijgevoegd :)
Fl4sh3r
%Europe/Berlin %842 %2005, 21:13
Die's cool, Flash3r !!
Fl4sh3r of Flasher? Vervelend, twee van die namen die zo op elkaar lijken... Maar dat had ik natuurlijk kunnen verwachten met van die a-alfabetische karakters.
Verder vind ik het erg leuk om te zien dat jullie er nu al zo enthousiast mee bezig zijn. Er zit veel moois tussen.
Ook ik moet geloof ik maar Flash 8 eens aanschaffen, anders kan ik de inzendingen niet eens controleren.
Roenes
%Europe/Berlin %871 %2005, 21:54
Wist je dat ik niet eens in de gaten had dat er 2 flashers aan het posten waren in deze topic ;)
Flasher
%Europe/Berlin %877 %2005, 22:04
@Roenes:
-Je kan ook zonder die ***** import dingen:
bd = new flash.display.BitmapData();
-Waarom gebruik je een ColorTransform class als een Number ook volstaat (om een hex getal op te slaan)
-Je gebruikt de setPixel32 method. Die werkt alleen als transparantie aan staat en in het formaat ARGB. Bij jou staat transparantie uit en je gebruikt RGB hex waarden.
Just 2 let U know ;)
Wist je dat ik niet eens in de gaten had dat er 2 flashers aan het posten waren in deze topic ;)Ik ook niet:D
Dauntless
%Europe/Berlin %897 %2005, 22:32
Roenes, smijt eens een swf online dan :). Mijn F8 trial is namelijk ook voorbij... Maar who cares, Flex Alpha is er :p
Mijn finale inzending:
createEmptyMovieClip("h",1);b=Math.sin;h._visible=0;h.lineStyle(1);h.moveT o(30,0);d=a=2;for(i=0;i<6.28;i+=.017)h.lineTo(b(i+1.57)*30,b(i)*30);
onEnterFrame=function(){b=Math.sin;x=b(.0476*a+1.5 7);y=b(.068*a);c=new Color(h.duplicateMovieClip("w"+d,d++,{_x:x*100+275,_y:y*130+200,_rotation:a,_xsc ale:x*100,_yscale:y*100,_alpha:Math.abs(b(d/200*6.28)*100)})).setRGB(a/100*0xFFFFFF);a++;d=d>200?2:d;};
Wat voluit dit is:
createEmptyMovieClip("h", 1);
b = Math.sin;
h._visible = 0;
h.lineStyle(1);
h.moveTo(30, 0);
d = a=2;
for (i=0; i<6.28; i += .017) {
h.lineTo(b(i+1.57)*30, b(i)*30);
}
onEnterFrame = function () {
b = Math.sin;
x = b(.0476*a+1.57);
y = b(.068*a);
c = new Color(h.duplicateMovieClip("w"+d, d++, {_x:x*100+275, _y:y*130+200, _rotation:a, _xscale:x*100, _yscale:y*100, _alpha:Math.abs(b(d/200*6.28)*100)})).setRGB(a/100*0xFFFFFF);
a++;
d = d>200 ? 2 : d;
};
Movie properties:
Gewone nieuwe .fla, en een framerate van 35 of zo, anders gaat het te traag :).
En 'k heb nog 3 chars over :p
Roenes
%Europe/Berlin %975 %2005, 00:24
@Roenes:
-Je kan ook zonder die ***** import dingen:
bd = new flash.display.BitmapData();
-Waarom gebruik je een ColorTransform class als een Number ook volstaat (om een hex getal op te slaan)
-Je gebruikt de setPixel32 method. Die werkt alleen als transparantie aan staat en in het formaat ARGB. Bij jou staat transparantie uit en je gebruikt RGB hex waarden.Klopt allemaal! Ik kwam er ook pas achter nadat ik em hier had gepost. Maar in eerste instantie was het ook niet de bedoeling dat dit hier kwam :P Ik was wat aan het prutsen in flash. Toen het af was, was het maar een paar regels. Ik dacht toen: ff wat scrappen en posten. Ik zal zo eens de overbodige troep eruit gooien en de code updaten (+swf voor DL ;))
//Edit
Het grootste deel van overbodige code is eruit gegooid. Het is nog wel verder te optimaliseren maar daar heb ik geen zin in aangezien ik er toch nie mee verder ga :)
Zie mijn eerdere post voor de code + swf
moflwm
%Europe/Berlin %792 %2005, 20:01
ziehier mijn portscanner en BOFH-style excuse client. geen idee hoe ik erbij ben gekomen om die twee functies in 1 script te steken :P
s=new Array();l=1024;createTextField("t",1,0,0,500,99);t.text="Ports:\n";for(p=0;p<1024;p++){s[p]=new XMLSocket();s[p].p=p;s[p].onConnect=function(c){if(c)t.text+=this.p+" ";this.close();if(--l<1){t.text+="\nExcuse:\n";b=new XML();b.load("http://home.scarlet.be/~plinius1/e");b.onLoad=function(s){e=String(b).split("\n");t.text+=e[Math.floor(Math.random()*e.length)];}}};s[p].connect("127.0.0.1",p);}
s = new Array();
l = 1024;
createTextField("t", 1, 0, 0, 500, 99);
t.text = "Ports:\n";
for (p=0; p<1024; p++) {
s[p] = new XMLSocket();
s[p].p = p;
s[p].onConnect = function(c) {
if (c) {
t.text += this.p+" ";
}
this.close();
if (--l<1) {
t.text += "\nExcuse:\n";
b = new XML();
b.load("http://home.scarlet.be/~plinius1/e");
b.onLoad = function(s) {
e = String(b).split("\n");
t.text += e[Math.floor(Math.random()*e.length)];
};
}
};
s[p].connect("127.0.0.1", p);
}
opmerkingen:
- exact 400 bytes!
- die excuses heb ik van http://www.cs.wisc.edu/~ballard/bofh/ en op mijn eigen webruimte gezet omdat die url korter is :)
- ze worden ingeladen via XML.load(), en de open poorten worden gecontroleerd dmv XMLSocket, op poorten < 1024 ==> security-problemen in de standalone player :(
- minstens 500x99px, getest in flash 7 en 8.
Cowerd
%Europe/Berlin %892 %2005, 22:25
Jaja!! een spiraalmaker!
als je een beetje talent hebt dan:P
createEmptyMovieClip("e",4);
Mouse.hide();
createEmptyMovieClip("c",8);
c.createEmptyMovieClip("a",9);
c.a.lineStyle(1,0,99);
c.a.moveTo(-8,0);
c.a.lineTo(8,0);
c.a.moveTo(0,-8);
c.a.lineTo(0,8);
c.onEnterFrame=function(){
c._x=_xmouse;
c._y=_ymouse;
}
onMouseDown=function(){
e.moveTo(c._x,c._y);
onMouseMove=function(){
g=random(0xFFFFFF);
e.lineStyle(5,g,99);
e.lineTo(c._x,c._y);
}
}
onMouseUp=function(){
this.onMouseMove=null;
}
en
createEmptyMovieClip("e",4);Mouse.hide();createEmptyMovieClip("c",8);c.createEmptyMovieClip("a",9);c.a.lineStyle(1,0,99);c.a.moveTo(-8,0);c.a.lineTo(8,0);c.a.moveTo(0,-8);c.a.lineTo(0,8);c.onEnterFrame=function(){c._x= _xmouse;c._y=_ymouse;}
onMouseDown=function(){e.moveTo(c._x,c._y);onMouse Move=function(){g=random(0xFFFFFF);e.lineStyle(5,g ,99);e.lineTo(c._x,c._y);}}
onMouseUp=function(){this.onMouseMove=null;}
Dauntless
%Europe/Berlin %904 %2005, 22:42
Die's leuk :).
Jordy vroeg me juist hoe je een fontijntje maakt... Hier wat AS, hier kan iemand z'n inzending van maken :).
d = 0;
this.onEnterFrame = function() {
b = this.createEmptyMovieClip("m"+d, d++);
b._x = 200;
b._y = 200;
b.x = Math.random()*10-5;
b.y = 10;
b.lineStyle(10);
b.lineTo(1, 0);
c = new Color(b).setRGB(Math.random()*0xFFFFFF);
b.onEnterFrame = function() {
this._x += this.x;
this._y -= this.y;
this.y--;
if (this._y>200) {
delete this.onEnterFrame;
this.removeMovieClip();
}
};
};
Jordy
%Europe/Berlin %909 %2005, 22:49
en ik zat maar te denken dat t met Math.sin() moest. pfffff :confused:
dat het inweze zo "simpel" kan zijn, maar ik kwam niet op het idee om t zo te doen :O
:P
ninetynine
%Europe/Berlin %910 %2005, 22:51
cool dauntless :) , maar :
c = new Color(B).setRGB(Math.random()*0xFFFFFF);
moet zijn :
c = new Color(b).setRGB(Math.random()*0xFFFFFF);
lekker mierenneuken :)
Dauntless
%Europe/Berlin %911 %2005, 22:52
***** msn :D.
Kijk, ik had dat bestandje gemaakt, en dat AS via msn doorgestuurd naar jordy. Dan bestandje gesloten en toen dacht ik 'hmm, misschien op FF posten'. Dan heb ik die code dus terug uit het chatvenster gecopy pasted en als je in msn dit doet:
/noicon test(e)
krijg je:
test(E)
Niet aan gedacht dus... ;)
Zal het ff veranderen, goed dat je het zegt :).
ninetynine
%Europe/Berlin %913 %2005, 22:54
ja met _root. heb je ook problemen :s
Gewoon doorzenden in .txt dan maar hé...
Roenes
%Europe/Berlin %006 %2005, 01:09
DL, je ifje doet het niet :P trace maar eens in de if ;) this ervoor zetten en het werkt (blijven wel je "druppels" liggen, removeMovieClip'je gebruiken misschien?)
Dauntless
%Europe/Berlin %307 %2005, 08:22
Done... :) Maar nu doe ik er niet meer aan verder, dan kan iemand anders er misschien nog iets leuks van maken :p.
mknol
%Europe/Berlin %413 %2005, 10:54
d = 0;
this.onEnterFrame = function() {
b = this.createEmptyMovieClip("m"+d, d++);
b.lineStyle(8);
b._x = 30;
b._y = 30;
i = Math.random()*5;
b.lineTo(0+i, 0+i);
i = Math.random()*5;
b.lineTo(10+i, 150+i);
i = Math.random()*5;
b.lineTo(0+i, 0+i);
i = Math.random()*5;
b.lineTo(50-i, 50+i);
i = Math.random()*5;
b.lineTo(100+i, 0+i);
i = Math.random()*5;
b.lineTo(90+i, 140+i);
b.onEnterFrame = function() {
b.clear();
};
};
Tja tis eigenlijk nix behalve een m. Ik heb het wat omgebouwd. Hoe kun je je bytes tellen?
Movie specs
Flash Player 6, ActionScript 1.0
Width: 200 px
Height: 200 px
FPS: 50
BGColor: 0xFFFFFF
Fl4sh3r
%Europe/Berlin %503 %2005, 13:05
ziehier mijn portscanner en BOFH-style excuse client. geen idee hoe ik erbij ben gekomen om die twee functies in 1 script te steken :P
...
opmerkingen:
- exact 400 bytes!
- die excuses heb ik van http://www.cs.wisc.edu/~ballard/bofh/ en op mijn eigen webruimte gezet omdat die url korter is :)
- ze worden ingeladen via XML.load(), en de open poorten worden gecontroleerd dmv XMLSocket, op poorten < 1024 ==> security-problemen in de standalone player :(
- minstens 500x99px, getest in flash 7 en 8.
Heel netjes dat je exact 400 bytes hebt, leuk script, maar je maakt gebruik van externe resources en dit is dus geen geldige inzending voor de battle.
...
Tja tis eigenlijk nix behalve een m. Ik heb het wat omgebouwd. Hoe kun je je bytes tellen?
In de startpost staat uitgelegd hoe je de bytes kunt tellen, ik kwam op 604. Als je script wat kleiner maakt (spaties eruit)
d=0;this.onEnterFrame=function(){b=this.createEmpt yMovieClip("m"+d,d++);b.lineStyle(8);b._x=30;b._y=30;i=Math.rand om()*5;b.lineTo(0+i,0+i);i=Math.random()*5;b.lineT o(10+i,150+i);i=Math.random()*5;b.lineTo(0+i,0+i); i=Math.random()*5;b.lineTo(50-i,50+i);i=Math.random()*5;b.lineTo(100+i,0+i);i=Ma th.random()*5;b.lineTo(90+i,140+i);b.onEnterFrame= function(){b.clear();};};
kom ik op
369 bytes.
edit: Als ik een beetje creatief speel met je code kom ik zelfs op 187 bytes.
d=0;r=Math.random;l=lineTo;this.onEnterFrame=funct ion(){clear();lineStyle(8);i=r()*5;moveTo(10+i,150 +i);i=r()*5;l(0+i,0+i);i=r()*5;l(50-i,50+i);i=r()*5;l(100+i,0+i);i=r()*5;l(90+i,140+i) }
en
d = 0;
r = Math.random;
l = lineTo;
this.onEnterFrame = function() {
clear();
lineStyle(8);
i = r()*5;
moveTo(10+i, 150+i);
i = r()*5;
l(0+i, 0+i);
i = r()*5;
l(50-i, 50+i);
i = r()*5;
l(100+i, 0+i);
i = r()*5;
l(90+i, 140+i)
}
Als ik vanavond weer thuis ben en tijd heb zal ik alle nieuwe scripts eens rustig bekijken en de deelnemerslijst in de startpost updaten.
Jordy
%Europe/Berlin %772 %2005, 19:32
die " d= 0; " kun je ook weghalen ;)
oh,when?
%Europe/Berlin %969 %2005, 00:16
Het lijkt me veel interesanter om de output ( de SWF ) te limiteren naar 400kb, zo kun je nog optimaliseren met de bytecode. :)
Hier is mijn (nog niet geldige) entry, een 3D kubus. Ik moet nog wat dingen herschrijven, want hij maakt nog gebruik van een movieclip in de library, plus hij is 55 bytes te groot :(
p=Math;s=p.sin;c=p.cos;k=l=m=n=0;onEnterFrame=func tion(){m+=k=d?(_ymouse-h)/2:k*.99;n+=l=d?(g-_xmouse)/2:l*.99;g=_xmouse;h=_ymouse;i=8;while(i--){with(attachMovie('d',i,i,{j:[(i&1)*100-50,(i>>1&1)*100-50,(i>>1>>1&1)*100-50]})){C=j[2]*c(n*.0174)-j[0]*s(n*.0174);D = 200/(j[1]*s(m*.0174)+C*c(m*.0174)+200);_x=200+D*(j[2]*s(n*.0174)+j[0]*c(n*.0174));_y=200+D*(j[1]*c(m*.0174)-C*s(m*.0174));_width=_height=D*6.65+1;}}};onMouseD own=onMouseUp=function(){d=!d;};
of de geformateerde versie:
p = Math;
s = p.sin;
c = p.cos;
k = l=m=n=0;
onEnterFrame = function () {
m += k=d ? (_ymouse-h)/2 : k*.99;
n += l=d ? (g-_xmouse)/2 : l*.99;
g = _xmouse;
h = _ymouse;
i = 8;
while (i--) {
with (attachMovie('d', i, i, {j:[(i & 1)*100-50, (i >> 1 & 1)*100-50, (i >> 1 >> 1 & 1)*100-50]})) {
C = j[2]*c(n*.0174)-j[0]*s(n*.0174);
D = 200/(j[1]*s(m*.0174)+C*c(m*.0174)+200);
_x = 200+D*(j[2]*s(n*.0174)+j[0]*c(n*.0174));
_y = 200+D*(j[1]*c(m*.0174)-C*s(m*.0174));
_width = _height=D*6.65+1;
}
}
};
onMouseDown = onMouseUp=function () {
d = !d;
};
Aaah wie weet ;) voor de oplettende lezers...het is eigenlijk geen 3D, meer 2.5D :P
Cowerd
%Europe/Berlin %974 %2005, 00:23
Ja en wat moet die movie clip in de library zijn?
Pimm
%Europe/Berlin %008 %2005, 01:11
d=0;this.onEnterFrame=function(){b=this.createEmpt yMovieClip("m"+d,d++);b.lineStyle(8);b._x=30;b._y=30;i=Math.rand om()*5;b.lineTo(0+i,0+i);i=Math.random()*5;b.lineT o(10+i,150+i);i=Math.random()*5;b.lineTo(0+i,0+i); i=Math.random()*5;b.lineTo(50-i,50+i);i=Math.random()*5;b.lineTo(100+i,0+i);i=Ma th.random()*5;b.lineTo(90+i,140+i);b.onEnterFrame= function(){b.clear();};};
kom ik op
369 bytes.
edit: Als ik een beetje creatief speel met je code kom ik zelfs op 187 bytes.
d=0;r=Math.random;l=lineTo;this.onEnterFrame=funct ion(){clear();lineStyle(8);i=r()*5;moveTo(10+i,150 +i);i=r()*5;l(0+i,0+i);i=r()*5;l(50-i,50+i);i=r()*5;l(100+i,0+i);i=r()*5;l(90+i,140+i) }
en
d = 0;
r = Math.random;
l = lineTo;
this.onEnterFrame = function() {
clear();
lineStyle(8);
i = r()*5;
moveTo(10+i, 150+i);
i = r()*5;
l(0+i, 0+i);
i = r()*5;
l(50-i, 50+i);
i = r()*5;
l(100+i, 0+i);
i = r()*5;
l(90+i, 140+i)
}Kan korter.die " d= 0; " kun je ook weghalen ;)Juist, dan kom je op:r=Math.random;l=lineTo;this.onEnterFrame=functi on(){clear();lineStyle(8);i=r()*5;moveTo(10+i,150+ i);i=r()*5;l(0+i,0+i);i=r()*5;l(50-i,50+i);i=r()*5;l(100+i,0+i);i=r()*5;l(90+i,140+i) }r = Math.random;
l = lineTo;
this.onEnterFrame = function() {
clear();
lineStyle(8);
i = r()*5;
moveTo(10+i, 150+i);
i = r()*5;
l(0+i, 0+i);
i = r()*5;
l(50-i, 50+i);
i = r()*5;
l(100+i, 0+i);
i = r()*5;
l(90+i, 140+i);
};183 bytes. Hij kán nog kleiner:l=lineTo;function z(){i=Math.random()*5}this.onEnterFrame=function() {clear();lineStyle(8);z();moveTo(10+i,150+i);z();l (0+i,0+i);z();l(50-i,50+i);z();l(100+i,0+i);z();l(90+i,140+i)}l = lineTo;
function z() {
i = Math.random()*5;
}
this.onEnterFrame = function() {
clear();
lineStyle(8);
z();
moveTo(10+i, 150+i);
z();
l(0+i, 0+i);
z();
l(50-i, 50+i);
z();
l(100+i, 0+i);
z();
l(90+i, 140+i);
};180 bytes. Die random gebruik je zo vaak dat hij wel in een function mag van mij.
Edit Cowerd, ik zou jouw cursor laten cursorren d.m.v. een startDrag i.p.v. een onEnterFrame (minder bytejes).
Cowerd
%Europe/Berlin %028 %2005, 01:40
Edit Cowerd, ik zou jouw cursor laten cursorren d.m.v. een startDrag i.p.v. een onEnterFrame (minder bytejes).
bedankt:D
oh,when?
%Europe/Berlin %050 %2005, 02:12
Ja en wat moet die movie clip in de library zijn?
Een movieclip met een graphic erin (iets kleine dan 10 x 10 pixels voldoet wel ) met een linkage name 'd' :)
Dauntless
%Europe/Berlin %337 %2005, 09:05
Pimm, kan je die van mij nog korter maken? :p
Fatty Owl
%Europe/Berlin %414 %2005, 10:57
createEmptyMovieClip("a",2);a.lineStyle(1);a.beginFill(0x66FF00,100);a.lin eTo(0,10);a.lineTo(10,10);a.lineTo(10,0);a.lineTo( 0,0);createEmptyMovieClip("k",1);k.lineStyle(5);k.beginFill(0x0000AA,100);k.lin eTo(0,0);k.lineTo(0,105);k.lineTo(225,105);k.lineT o(225,0);s=10;b=1;onEnterFrame=function(){;a._x+=s ;a._y+=b;if(a._x<0 or a._x>200){s=-s-10};if(a._y<0 or a._y>90){b=-b-0.5}}
Mijn laatste verise.
377 bytes
Specs: 225x110
Geformatte versie:
createEmptyMovieClip("a", 2);
a.lineStyle(1);
a.beginFill(0x66FF00, 100);
a.lineTo(0, 10);
a.lineTo(10, 10);
a.lineTo(10, 0);
a.lineTo(0, 0);
createEmptyMovieClip("k", 1);
k.lineStyle(5);
k.beginFill(0x0000AA, 100);
k.lineTo(0, 0);
k.lineTo(0, 105);
k.lineTo(225, 105);
k.lineTo(225, 0);
s = 10;
b = 1;
onEnterFrame = function () {
a._x += s;
a._y += b;
if (a._x<0 or a._x>200) {
s = -s-10;
}
if (a._y<0 or a._y>90) {
b = -b-0.5;
}
};
Dauntless
%Europe/Berlin %545 %2005, 14:05
Let's see...
if (a._x<0 or a._x>200) {
s = -s-10;
}
if (a._y<0 or a._y>90) {
b = -b-0.5;
}Kan korter:
if (a._x<0||a._x>200) {
s = -s-10;
}
if (a._y<0||a._y>90) {
b = -b-0.5;
}
En 'k heb nog geen tijd gehad voor de rest :p
Fatty Owl
%Europe/Berlin %551 %2005, 14:14
thx:P
Roenes
%Europe/Berlin %589 %2005, 15:08
Let's see:
if (a._x<0||a._x>200) {
s = -s-10;
}
if (a._y<0||a._y>90) {
b = -b-0.5;
}
kan nog korter:
if(a._x<0||a._x>200)s=-s-10;
if(a._y<0||a._y>90)b=-b-0.5;:D
Cowerd
%Europe/Berlin %600 %2005, 15:24
Let's see:
if(a._x<0||a._x>200)s=-s-10;
if(a._y<0||a._y>90)b=-b-0.5;:D
kan nog korter
if(0>a._x>200)s=-s-10;
if(0>a._y>90)b=-b-0.5;
:D:D owned:P
Straks even kijken of het echt werkt:P
Tha Narie
%Europe/Berlin %605 %2005, 15:31
FOUT kan niet! Beter eerst even testen!
Fl4sh3r
%Europe/Berlin %607 %2005, 15:34
Dat werkt niet, (a>b>c) want a>b geeft een true/false, deze vergelijk je dan met c.
Cowerd
%Europe/Berlin %616 %2005, 15:47
shit:P ja had beter eerst moeten testen:P
Pimm
%Europe/Berlin %852 %2005, 21:27
Waar was ik gisteren mee bezig? Hij kan nog 5 bytes kleiner (die this mag eraf):l=lineTo;function z(){i=Math.random()*5}onEnterFrame=function(){clea r();lineStyle(8);z();moveTo(10+i,150+i);z();l(0+i, 0+i);z();l(50-i,50+i);z();l(100+i,0+i);z();l(90+i,140+i)}ofl = lineTo;
function z() {
i = Math.random()*5;
}
onEnterFrame = function () {
clear();
lineStyle(8);
z();
moveTo(10+i, 150+i);
z();
l(0+i, 0+i);
z();
l(50-i, 50+i);
z();
l(100+i, 0+i);
z();
l(90+i, 140+i);
};Nu is hij 175 bytes en dus kun je er nog 225 bij schrijven.
@Dauntless: Over welke script had jij 't?
Dauntless
%Europe/Berlin %855 %2005, 21:31
Over die van faty owl
Pimm
%Europe/Berlin %882 %2005, 22:11
createEmptyMovieClip("a",2);a.lineStyle(1);a.beginFill(0x66FF00,100);a.lin eTo(0,10);a.lineTo(10,10);a.lineTo(10,0);a.lineTo( 0,0);createEmptyMovieClip("k",1);k.lineStyle(5);k.beginFill(0x0000AA,100);k.lin eTo(0,0);k.lineTo(0,105);k.lineTo(225,105);k.lineT o(225,0);s=10;b=1;onEnterFrame=function(){;a._x+=s ;a._y+=b;if(a._x<0 or a._x>200){s=-s-10};if(a._y<0 or a._y>90){b=-b-0.5}}
Mijn laatste verise.
377 bytes
Specs: 225x110
Geformatte versie:
createEmptyMovieClip("a", 2);
a.lineStyle(1);
a.beginFill(0x66FF00, 100);
a.lineTo(0, 10);
a.lineTo(10, 10);
a.lineTo(10, 0);
a.lineTo(0, 0);
createEmptyMovieClip("k", 1);
k.lineStyle(5);
k.beginFill(0x0000AA, 100);
k.lineTo(0, 0);
k.lineTo(0, 105);
k.lineTo(225, 105);
k.lineTo(225, 0);
s = 10;
b = 1;
onEnterFrame = function () {
a._x += s;
a._y += b;
if (a._x<0 or a._x>200) {
s = -s-10;
}
if (a._y<0 or a._y>90) {
b = -b-0.5;
}
};Kan inderdaad kleiner:t=s=10;b=1;c=createEmptyMovieClip;c("a",2);with(a){lineStyle(1);beginFill(0x66FF00);lineT o(0,t);lineTo(t,t);lineTo(t,0);lineTo(0,0)}c("k",1);with(k){lineStyle(5);beginFill(0x0000AA);lineT o(0,0);lineTo(0,105);lineTo(225,105);lineTo(225,0) }onEnterFrame=function(){a._x+=s;a._y+=b;a._x<0||a._x>200?s=-s-t:0;a._y<0||a._y>90?b=-b-0.5:0}Oft = s = 10;
b = 1;
c = createEmptyMovieClip;
c("a", 2);
with (a) {
lineStyle(1);
beginFill(0x66FF00);
lineTo(0, t);
lineTo(t, t);
lineTo(t, 0);
lineTo(0, 0);
}
c("k", 1);
with (k) {
lineStyle(5);
beginFill(0x0000AA);
lineTo(0, 0);
lineTo(0, 105);
lineTo(225, 105);
lineTo(225, 0);
}
onEnterFrame = function () {
a._x += s;
a._y += b;
a._x<0 || a._x>200 ? s=-s-t : 0;
a._y<0 || a._y>90 ? b=-b-0.5 : 0;
};331 bytes (i.p.v. 377). Misschien kan die lineTo in een var worden gestopt, maar dat is lastig door de with (misschien dan de with er maar weer uit?)
Roenes
%Europe/Berlin %522 %2005, 13:32
shit:P ja had beter eerst moeten testen:PWiskunde werkt idd wel zo, maar flash niet :p
Fatty Owl
%Europe/Berlin %561 %2005, 14:29
331 bytes (i.p.v. 377).
ik word ge-owned :P :P maar ik begrijp niet wat with doet?
Dauntless
%Europe/Berlin %562 %2005, 14:30
Da's oude syntax
ipv
movieClip._x = 5;
with(movieClip){
_x = 5;
}
Zo kan je meerdere properties instellen met maar 1x te zeggen over welke movieclip het gaat.
Fl4sh3r
%Europe/Berlin %563 %2005, 14:31
t = s = 10;
b = 1;
c = createEmptyMovieClip;
c("a", 2);
with (a) {
lineStyle(1);
beginFill(0x66FF00);
lineTo(0, t);
lineTo(t, t);
lineTo(t, 0);
lineTo(0, 0);
}
c("k", 1);
with (k) {
lineStyle(5);
beginFill(0x0000AA);
lineTo(0, 0);
lineTo(0, 105);
lineTo(225, 105);
lineTo(225, 0);
}
onEnterFrame = function () {
a._x += s;
a._y += b;
a._x<0 || a._x>200 ? s=-s-t : 0;
a._y<0 || a._y>90 ? b=-b-0.5 : 0;
};
Kan nog iets kleiner, die lineTo is me nog niet gelukt, maar de with wel:
c("a", 2);
with (a) {
veranderen in
with(c("a",2)){
't scheelt niet veel, maar alle kleine beetjes helpen.
Fatty Owl
%Europe/Berlin %563 %2005, 14:31
oude syntax is soms toch nog voor iets goed :P
Pimm
%Europe/Berlin %681 %2005, 17:21
Kan nog iets kleiner, die lineTo is me nog niet gelukt, maar de with wel:
c("a", 2);
with (a) {
veranderen in
with(c("a",2)){
't scheelt niet veel, maar alle kleine beetjes helpen.Daar had ik nog niet eens aan gedacht, maar het werkt! Geniaal.oude syntax is soms toch nog voor iets goed :PInderdaad. Ik gebruik with normaal gesproken ook nooit, maar het scheelt hier wel een paar bytes.
Roenes
%Europe/Berlin %807 %2005, 20:22
Kan nog iets kleiner, die lineTo is me nog niet gelukt, maar de with wel:Die lineTo geeft idd vreemde problemen, als je die gaat inkorten dan krijg ik het ook niet werkend. Beetje vreemd waarom die niet mee werkt :)
Dauntless
%Europe/Berlin %841 %2005, 21:11
Zoals iedereen hier heb ik ook al aan die lineTo zitten sleutellen maar het is blijkbaar onmogelijk ...
Als je dit doet:
l=lineTo;
with(mc)
{
l(1,1);
}
Dan zit je te tekenen op de hoofdtijdlijn en niet in de 'mc'.
Fl4sh3r
%Europe/Berlin %867 %2005, 21:49
Zoals iedereen hier heb ik ook al aan die lineTo zitten sleutellen maar het is blijkbaar onmogelijk ...
Als je dit doet:
l=lineTo;
with(mc)
{
l(1,1);
}
Dan zit je te tekenen op de hoofdtijdlijn en niet in de 'mc'.
Ook dit:
with(a) {
l=lineTo;
l(100,100);
}
en dit:
with(a) {
l=a.lineTo;
l(100,100);
}
werkt niet...
oh,when?
%Europe/Berlin %991 %2005, 00:47
Heb nog een poging ondernomen, om iig de library dependency te verwijderen, en dat is gelukt:
p=Math;s=p.sin;c=p.cos;b=200;e=.0174;f=b/2;k=l=m=n=0;t=lineTo;onEnterFrame=function(){m+=k= d?(_ymouse-h)/2:k*.99;n+=l=d?(g-_xmouse)/2:l*.99;g=_xmouse;h=_ymouse;i=8;while(i--){a=this.createEmptyMovieClip(i,i);a.beginFill(0xF F0000);a.moveTo(10,10);a.lineTo(f,10);a.lineTo(f,f );a.lineTo(10,f);a.lineTo(10,10);a.endFill();a.j=[(i&1)*f-50,(i>>1&1)*f-50,(i>>1>>1&1)*f-50];with(a){C=j[2]*c(n*e)-j[0]*s(n*e);D=b/(j[1]*s(m*e)+C*c(m*e)+b);_x=b+D*(j[2]*s(n*e)+j[0]*c(n*e));_y=b+D*(j[1]*c(m*e)-C*s(m*e));_width=_height=D*6.65+1}}};onMouseDown=o nMouseUp=function(){d=!d}
of
p = Math;
s = p.sin;
c = p.cos;
b = 200;
e = .0174;
f = b/2;
k = l=m=n=0;
t = lineTo;
onEnterFrame = function () {
m += k=d ? (_ymouse-h)/2 : k*.99;
n += l=d ? (g-_xmouse)/2 : l*.99;
g = _xmouse;
h = _ymouse;
i = 8;
while (i--) {
a = this.createEmptyMovieClip(i, i);
a.beginFill(0xFF0000);
a.moveTo(10, 10);
a.lineTo(f, 10);
a.lineTo(f, f);
a.lineTo(10, f);
a.lineTo(10, 10);
a.endFill();
a.j = [(i & 1)*f-50, (i >> 1 & 1)*f-50, (i >> 1 >> 1 & 1)*f-50];
with (a) {
C = j[2]*c(n*e)-j[0]*s(n*e);
D = b/(j[1]*s(m*e)+C*c(m*e)+b);
_x = b+D*(j[2]*s(n*e)+j[0]*c(n*e));
_y = b+D*(j[1]*c(m*e)-C*s(m*e));
_width = _height=D*6.65+1;
}
}
};
onMouseDown = onMouseUp=function () {
d = !d;
};
Maar de code is niet alleen groter geworden (545 bytes), maar de resulterende SWF is ook gegroeid in bytecode ( maar liefst 715 bytes ), waar deze voorheen ongeveer 200 bytes kleiner was. Daarom denk ik dat het veel interesanter is om de output te meten in bytes ( dus de SWF ) ipv de broncode, omdat je dan ECHT leert optimaliseren (ontdekken van herhalende patronen in je code en compiler, optimaliseren van bytecode ipv broncode ).
Iig kun je deze code gewoon c/p in een nieuwe FLA en dan moet het werken, zou wel de framerate op 120 zetten :)
Ik ga nog eens kijken of er wat te optimaliseren valt.
Fl4sh3r
%Europe/Berlin %313 %2005, 08:32
Het schiet misschien niet heel erg op, maar tis een stap in de goeie richting:
a = this.createEmptyMovieClip(i, i);
a.beginFill(0xFF0000);
a.moveTo(10, 10);
a.lineTo(f, 10);
a.lineTo(f, f);
a.lineTo(10, f);
a.lineTo(10, 10);
a.endFill();
a.j = [(i & 1)*f-50, (i >> 1 & 1)*f-50, (i >> 1 >> 1 & 1)*f-50];
with (a) {
C = j[2]*c(n*e)-j[0]*s(n*e);
D = b/(j[1]*s(m*e)+C*c(m*e)+b);
_x = b+D*(j[2]*s(n*e)+j[0]*c(n*e));
_y = b+D*(j[1]*c(m*e)-C*s(m*e));
_width = _height=D*6.65+1;
}
veranderen in:
with (this.createEmptyMovieClip(i, i)) {
beginFill(0xFF0000);
moveTo(10, 10);
lineTo(f, 10);
lineTo(f, f);
lineTo(10, f);
lineTo(10, 10);
endFill();
j = [(i & 1)*f-50, (i >> 1 & 1)*f-50, (i >> 1 >> 1 & 1)*f-50];
C = j[2]*c(n*e)-j[0]*s(n*e);
D = b/(j[1]*s(m*e)+C*c(m*e)+b);
_x = b+D*(j[2]*s(n*e)+j[0]*c(n*e));
_y = b+D*(j[1]*c(m*e)-C*s(m*e));
_width = _height=D*6.65+1;
}
(niet getest)
Roenes
%Europe/Berlin %628 %2005, 16:05
Zoiezo de endFill eruit halen. Scheelt alweer 10 bytes. Het is misschien wel zo netjes om de fill te sluiten, maar dat hoeft nu niet :P
mknol
%Europe/Berlin %646 %2005, 16:30
l = lineTo;
function z() {
i = Math.random()*5;
}
onEnterFrame = function () {
clear();
lineStyle(8);
z();
moveTo(10+i, 150+i);
z();
l(0+i, 0+i);
z();
l(50-i, 50+i);
z();
l(100+i, 0+i);
z();
l(90+i, 140+i);
};
KOEL!! :D
of:
l = lineTo
q=50
function z() {
i = Math.random()*5
}
onEnterFrame = function () {
clear()
lineStyle(8);
moveTo(i, 99+i)
z()
l(i, i)
z()
l(q-i, q+i)
z()
l(99+i, i)
z()
l(99+i, 99+i)
};
ook zonder ; die zijn toch niet verplicht he..? ook de getallen heb ik aangepast dat het max 2 tekens kost.
Roenes
%Europe/Berlin %678 %2005, 17:16
q=50
...
l(q-i, q+i)dit kan makkelijker hoor mknol :) gewoon 49 en 51 invullen aangezien q nergens veranderd kost het je nu meer bytes :)
l(49, 51)scheelt wel he ;)
Cowerd
%Europe/Berlin %685 %2005, 17:27
Mag je eigenlijk gebruik maken van extenties?
Roenes
%Europe/Berlin %690 %2005, 17:34
Ik denk dat we dat het beste niet kunnen doen. Anders kun je allemaal tweens en dergelijke gaan gebruiken die al in een extensie zitten. Dan kun je van veel code externe AS files maken die je include en is het einde zoek :P
Ik ben geen voorstander van extensies in deze battle :)
Dauntless
%Europe/Berlin %702 %2005, 17:51
q=50
...
l(q-i, q+i)dit kan makkelijker hoor mknol :) gewoon 49 en 51 invullen aangezien q nergens veranderd kost het je nu meer bytes :)
Maar normaal heb je van l(45-50 , 50-55); , dus dat is variabel! Die mag je toch niet statisch maken? 't Is -i, niet -1 ...
mknol
%Europe/Berlin %716 %2005, 18:11
q=50
...
l(q-i, q+i)dit kan makkelijker hoor mknol :) gewoon 49 en 51 invullen aangezien q nergens veranderd kost het je nu meer bytes :)
l(49, 51)scheelt wel he ;)
maar 49 zijn toch 2 tekens, en q 1 teken?
dat scheelt dan toch, of begrijp ik je nou verkeerd? 8D Erg leuk dit overigens
mknol
%Europe/Berlin %717 %2005, 18:12
Mag je eigenlijk gebruik maken van extenties?
Opdracht
De opdracht is: maak een zo spekend mogelijke Flash movie met maar 400 bytes aan ActionScript. Zonder hierbij gebruik te maken van externe resources, MovieClips, Graphics of andere getekende objecten.
ik denk het dan dus niet?
Roenes
%Europe/Berlin %730 %2005, 18:31
Ehmz, vergeet mijn eerdere reactie maar aangezien Dauntless mij er terecht op wijst dat het -i is ipv -1 :)
maar 49 zijn toch 2 tekens, en q 1 teken?
dat scheelt dan toch, of begrijp ik je nou verkeerd?Daar heb je gelijk in, maar jij vergeet de regel daarboven. Als de situatie zo was met -1 (wat ik dus las) dan is l(49, 51) 9 bytes en q=50 l(q-i, q+i) 15 bytes. dit komt dus doordat je die q=50 erbij moet tellen. Die zou in mijn situatie niet nodig zijn. Maar nogmaals: dat ging alleen op als er -1 stond.
Wat ik me nu bedenk:
l(50-i, 50+i)is wel weer kleiner alsq=50
l(q-i, q+i)Het scheelt 2 bytes. Spaties meegerekend en enters niet meegerekend. Dus dat kun je nog wel doen :)
Pimm
%Europe/Berlin %732 %2005, 18:35
Heb nog een poging ondernomen, om iig de library dependency te verwijderen, en dat is gelukt:
p=Math;s=p.sin;c=p.cos;b=200;e=.0174;f=b/2;k=l=m=n=0;t=lineTo;onEnterFrame=function(){m+=k= d?(_ymouse-h)/2:k*.99;n+=l=d?(g-_xmouse)/2:l*.99;g=_xmouse;h=_ymouse;i=8;while(i--){a=this.createEmptyMovieClip(i,i);a.beginFill(0xF F0000);a.moveTo(10,10);a.lineTo(f,10);a.lineTo(f,f );a.lineTo(10,f);a.lineTo(10,10);a.endFill();a.j=[(i&1)*f-50,(i>>1&1)*f-50,(i>>1>>1&1)*f-50];with(a){C=j[2]*c(n*e)-j[0]*s(n*e);D=b/(j[1]*s(m*e)+C*c(m*e)+b);_x=b+D*(j[2]*s(n*e)+j[0]*c(n*e));_y=b+D*(j[1]*c(m*e)-C*s(m*e));_width=_height=D*6.65+1}}};onMouseDown=o nMouseUp=function(){d=!d}
of
p = Math;
s = p.sin;
c = p.cos;
b = 200;
e = .0174;
f = b/2;
k = l=m=n=0;
t = lineTo;
onEnterFrame = function () {
m += k=d ? (_ymouse-h)/2 : k*.99;
n += l=d ? (g-_xmouse)/2 : l*.99;
g = _xmouse;
h = _ymouse;
i = 8;
while (i--) {
a = this.createEmptyMovieClip(i, i);
a.beginFill(0xFF0000);
a.moveTo(10, 10);
a.lineTo(f, 10);
a.lineTo(f, f);
a.lineTo(10, f);
a.lineTo(10, 10);
a.endFill();
a.j = [(i & 1)*f-50, (i >> 1 & 1)*f-50, (i >> 1 >> 1 & 1)*f-50];
with (a) {
C = j[2]*c(n*e)-j[0]*s(n*e);
D = b/(j[1]*s(m*e)+C*c(m*e)+b);
_x = b+D*(j[2]*s(n*e)+j[0]*c(n*e));
_y = b+D*(j[1]*c(m*e)-C*s(m*e));
_width = _height=D*6.65+1;
}
}
};
onMouseDown = onMouseUp=function () {
d = !d;
};
Maar de code is niet alleen groter geworden (545 bytes), maar de resulterende SWF is ook gegroeid in bytecode ( maar liefst 715 bytes ), waar deze voorheen ongeveer 200 bytes kleiner was. Daarom denk ik dat het veel interesanter is om de output te meten in bytes ( dus de SWF ) ipv de broncode, omdat je dan ECHT leert optimaliseren (ontdekken van herhalende patronen in je code en compiler, optimaliseren van bytecode ipv broncode ).
Iig kun je deze code gewoon c/p in een nieuwe FLA en dan moet het werken, zou wel de framerate op 120 zetten :)
Ik ga nog eens kijken of er wat te optimaliseren valt.p=Math;s=p.sin;c=p.cos;t=10;b=200;e=.0174;f=t *t;k=l=m=n=0;onEnterFrame=function(){m+=k=d?(_ymou se-h)/2:k*.99;n+=l=d?(g-_xmouse)/2:l*.99;g=_xmouse;h=_ymouse;i=8;while(i--){with(createEmptyMovieClip(i,i)){beginFill(0xFF00 00);moveTo(t,t);lineTo(f,t);lineTo(f,f);lineTo(t,f );lineTo(t,t);j=[(i&1)*f-50,(i>>1&1)*f-50,(i>>1>>1&1)*f-50];C=j[2]*c(n*e)-j[0]*s(n*e);D=b/(j[1]*s(m*e)+C*c(m*e)+b);_x=b+D*(j[2]*s(n*e)+j[0]*c(n*e));_y=b+D*(j[1]*c(m*e)-C*s(m*e));_width=_height=D*6.65+1}}};onMouseDown=o nMouseUp=function(){d=!d}Ofp = Math;
s = p.sin;
c = p.cos;
t = 10;
b = 200;
e = .0174;
f = t*t;
k = l = m = n = 0;
onEnterFrame = function () {
m += k=d ? (_ymouse-h)/2 : k*.99;
n += l=d ? (g-_xmouse)/2 : l*.99;
g = _xmouse;
h = _ymouse;
i = 8;
while (i--) {
with (createEmptyMovieClip(i, i)) {
beginFill(0xFF0000);
moveTo(t, t);
lineTo(f, t);
lineTo(f, f);
lineTo(t, f);
lineTo(t, t);
j = [(i & 1)*f-50, (i >> 1 & 1)*f-50, (i >> 1 >> 1 & 1)*f-50];
C = j[2]*c(n*e)-j[0]*s(n*e);
D = b/(j[1]*s(m*e)+C*c(m*e)+b);
_x = b+D*(j[2]*s(n*e)+j[0]*c(n*e));
_y = b+D*(j[1]*c(m*e)-C*s(m*e));
_width = _height=D*6.65+1;
}
}
};
onMouseDown = onMouseUp=function () {
d = !d;
};512 bytes i.p.v. 545. Hmmm, hij moet onder de 400 te krijgen zijn...
Cowerd
%Europe/Berlin %758 %2005, 19:11
Als we zo nou eens denken bij echte spellen enzo.. dan werd dat ook allemaal een stuk kleiner en sneller!
Dauntless
%Europe/Berlin %763 %2005, 19:18
Geen goed id ;). Als ik nu m'n code terug bekijk versta ik al moeilijk wat er nu gebeurt :p.
Roenes
%Europe/Berlin %763 %2005, 19:19
Kleiner betekend niet bij voorbaat sneller hoor Cowerd ;)
En als je dit gaat toepassen op spellen en andere grote projecten dan is het bijbouwen van functies geen doen. Dus dit soort dingen zijn leuk voor een battle, maar niet voor het serieuzere scriptwerk :)
Dauntless
%Europe/Berlin %764 %2005, 19:20
[QUOTE=Roenes]Kleiner betekend niet bij voorbaat sneller hoor Cowerd ;)[/quote[
't Is eigenlijk mooi verdeelt:
Kleinere var namen -> sneller
Minder functie calls -> sneller
Meer variabelen ipv hardcoded getallen -> trager
oudere syntax -> trager ? (met een vraagteken erbij!)
Roenes
%Europe/Berlin %832 %2005, 20:58
oudere syntax -> trager ? (met een vraagteken erbij!)Tegenwoordig volgens mij wel jah. Eerder was Flash 4 syntax nog wel snel omdat de flashplayer nog niet genoeg omgebouwd was. Maar flashplayer 7 was volgens mij vanaf de grond opnieuw opgebouwd waardoor dat niet meer opgaat. :)
oh,when?
%Europe/Berlin %986 %2005, 00:40
Tegenwoordig volgens mij wel jah. Eerder was Flash 4 syntax nog wel snel omdat de flashplayer nog niet genoeg omgebouwd was. Maar flashplayer 7 was volgens mij vanaf de grond opnieuw opgebouwd waardoor dat niet meer opgaat. :)
Nope (http://www.flashfocus.nl/forum/showpost.php?p=28591&postcount=65). Dat is ook precies de reden wat ik al eerder heb gezegd. De limiet van 400 bytes op de sourcecode, zorgt ervoor dat de SWF groter wordt (omdat de compiler deze vertaalt naar meer lookups (zogenaamde getMember calls voor iedere variable), en dit is (theoretisch gezien) trager. Het is daarom veel interesanter (en technisch meer uitdagend) om de output te meten ipv de broncode :)
Fl4sh3r
%Europe/Berlin %313 %2005, 08:31
Nope (http://www.flashfocus.nl/forum/showpost.php?p=28591&postcount=65). Dat is ook precies de reden wat ik al eerder heb gezegd. De limiet van 400 bytes op de sourcecode, zorgt ervoor dat de SWF groter wordt (omdat de compiler deze vertaalt naar meer lookups (zogenaamde getMember calls voor iedere variable), en dit is (theoretisch gezien) trager. Het is daarom veel interesanter (en technisch meer uitdagend) om de output te meten ipv de broncode :)
Ik ben dit opzich wel met je eens, maar zoals je in de startpost kunt lezen ben ik op een andere manier tot dit idee gekomen. Voor deze contest ga ik de regels nu niet meer veranderen, misschien een leuk idee voor een volgende battle.
Dauntless
%Europe/Berlin %533 %2005, 13:48
Ik denk dat er veel mensen nog niet eens weten hoe je dat zou moeten gaan aanpassen... Maar ik wil het wel graag weten :). Met welk programma gaat dat bv ?
Roenes
%Europe/Berlin %545 %2005, 14:04
Volgens mij bedoelt oh,when? dat je gewoon moet proberen om de swf onder de 400 bytes te laten komen omdat dit technisch interessanter is :)
Fl4sh3r
%Europe/Berlin %483 %2005, 12:35
De deadline heb ik een aantal dagen terug gezet op 31 oktober.
Zijn er mensen die deze deadline graag verschoven willen hebben voor wat extra tijd?
Het topic is nu al enkele dagen erg rustig, dus wat mij betreft blijft de deadline 31-okt.
Kijk ook even of het linkje onder je naam in de startpost ook daadwerkelijk lijdt naar je final inzending.
Pimm
%Europe/Berlin %791 %2005, 19:59
Ik denk dat ik vandaag even een inzending in elkaar knutsel, verder geen tijd meer voor 31 oktober...
mknol
%Europe/Berlin %579 %2005, 13:54
Wie heeft er gewonnen???
Ea.Z
%Europe/Berlin %583 %2005, 14:00
vraag ik me nu ook wel af:)
Dopefish
%Europe/Berlin %657 %2005, 15:47
Ja maak het maar bekend, en dan wil ik ook swfjes zien want ik was te lui om te actionscript te kopieren en zelf te kijken :D 8~
Fl4sh3r
%Europe/Berlin %660 %2005, 15:51
De deadline is vandaag, je mag nog tot vanavond 23:59 inzenden.
Dopefish
%Europe/Berlin %664 %2005, 15:56
en degene met een pompoen in zijn filmpje wint altijd
Ea.Z
%Europe/Berlin %695 %2005, 16:41
en? en? en?
mknol
%Europe/Berlin %736 %2005, 17:40
en en en????????
Cowerd
%Europe/Berlin %784 %2005, 18:49
en en en????????
idem dito
Fl4sh3r
%Europe/Berlin %860 %2005, 20:39
And the winner is....
Flasher
(Flasher != Fl4sh3r)
Tweede en derde, respectievelijk: Dauntless en Roenes
Leuk dat jullie zo enthousiast meededen. Als ik binnenkort nog eens een leuk idee heb voor een contest zal ik dit zeker verder uitwerken.
Jammer dat Pimm uiteindelijk toch geen inzending heeft gedaan.
Van oh,when? en moflwm is het jammer dat ze geen geldige inzending hebben. Die van oh,when? vond ik wel erg goed, maar helaas niet geldig.
Nogmaals: leuk dat jullie meededen.
Sorry dat ik pas zo laat post, had het vandaag erg druk op mn stage.
edit:
http://www.bleq.nl/~chris/pics/FlashFocus/400bytesAS_uitslag.png
Dauntless
%Europe/Berlin %861 %2005, 20:40
En waarom wint Flasher ? :) (Nene, niet jaloers :p)
Pimm
%Europe/Berlin %910 %2005, 21:51
Arg! Nu wil ik Flasher's inzending zien ook! Een screenshotje misschien, voor de niet-Flash 8-houders ;)
Fl4sh3r
%Europe/Berlin %930 %2005, 22:19
http://www.bleq.nl/~chris/Flasher.swf
Heb m even snel online gezet.
Ea.Z
%Europe/Berlin %990 %2005, 23:46
leuk hoor! proficiat aan allen :)
Roenes
%Europe/Berlin %993 %2005, 23:51
Twas idd een leuke battle, alleen jammer dat ik niet wat meer inzendingen heb gedaan. Ik kon alleen niets verzinnen...
Achjah, volgende keer beter :)
oh,when?
%Europe/Berlin %435 %2005, 10:27
Shit, helemaal vergeten :D Nou ja..volgende keer beter, en proficiat aan de winnaars :)
( ik stem voor een Flash 8.5 battle! :ja: )
mknol
%Europe/Berlin %584 %2005, 14:01
Ahh verloren [?] ... :( Ik kruip weer terug naar het HTMLforum.
:D Winnaars, gefeliciteerd. Van mij krijg je een reputatiepunt
Flasher
%Europe/Berlin %737 %2005, 17:42
:O :O :O
cannot believe it :D:D:D cannot believe it :D:D:D
maakt de dag/week/maand/jaar weer goed 8D 8D
---Keert weer terug op aarde---
Dit had ik echt niet verwacht:S
P.S. Fl4sh3r, die zak geld stuur ik gelijk op ;)
Dauntless
%Europe/Berlin %744 %2005, 17:51
Wie dacht je dan dat er ging winnen, Flasher? :)
Flasher
%Europe/Berlin %931 %2005, 22:20
geen id:D ik had de andere inzendingen niet gezien:S
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.