ik wil een object in flash heel langzaam roteren (iets van 1° in 2 seconden). dan verloopt de animatie echter heel schokkerig (zoweel getweend als gescript). hier een voorbeeldje (25fps) met hulplijnen elke 0,5°. het lijkt erop dat flash een minimale waarde van 0.25° gebruikt voor de rotatie. Ik kan hier alleen nergens iets over vinden. Weet iemand waar dit aan ligt, een vooral: een manier om kleine rotaties wel soepel te laten verlopen?
ik heb geen oplossing voor je maar vraag me af waarom je het zou willen? is het voor een spelletje?
en zoals je het nu doet, doe je 1 graad x 2 seconden en dat een aantal keer. Kan je er niet beter 1 grote animatie van maken? waarom steeds per 2 seconden? en niet bijv. 10 graden in 20 seconden? zou het dan niet vloeiender lopen?
en zoals je het nu doet, doe je 1 graad x 2 seconden en dat een aantal keer. Kan je er niet beter 1 grote animatie van maken? waarom steeds per 2 seconden? en niet bijv. 10 graden in 20 seconden? zou het dan niet vloeiender lopen?
het gaat om een soort van spotlight die heel langzaam heen en weer moet roteren: in 2 seconden 1 graad naar links, daarna in 2 seconde weer terug naar rechts.
Verwijderd
Misschien zou je het geheel moeten scripten in actionscript. Nu maak je gebruik van de Motion/Tween optie in flash?Verwijderd schreef op vrijdag 05 augustus 2005 @ 14:53:
het gaat om een soort van spotlight die heel langzaam heen en weer moet roteren: in 2 seconden 1 graad naar links, daarna in 2 seconde weer terug naar rechts.
De topictitel is wat ongelukkig. het voorbeeldje dat ik in de topicstart noem is gescript; bij 25fps laat ik de rechthoek onEnterFrame 0,02° roteren. Ik heb ook geprobeerd om telkens met 359,98° te roteren, maar dan houd je helaas hetzelfde schokkerige verloop.
Hier geen problemen hoor 
Ik gebruik wel een andere methode dan jij, zie ook de .fla (flash mx 2004).
Mocht je deze methode van heen en weer springen tussen 2 frames niet bevallen/kunnen gebruiken, dan kun je je heil denk ik het beste zoeken in de setInterval methode. Zie hiervoor vooral de help, maar het zal hierop neer komen:
[code]var intervalNummer:Number = setInterval(function () {
vierkant._rotation += 0.1;
}, 35);[/code]
Hmm, het lijkt erop dat ik je probleem iets te simpel ingeschat heb, ik heb inderdaad het zelfde probleem...
Ik gebruik wel een andere methode dan jij, zie ook de .fla (flash mx 2004).
Mocht je deze methode van heen en weer springen tussen 2 frames niet bevallen/kunnen gebruiken, dan kun je je heil denk ik het beste zoeken in de setInterval methode. Zie hiervoor vooral de help, maar het zal hierop neer komen:
[code]var intervalNummer:Number = setInterval(function () {
vierkant._rotation += 0.1;
}, 35);[/code]
Hmm, het lijkt erop dat ik je probleem iets te simpel ingeschat heb, ik heb inderdaad het zelfde probleem...
[ Voor 11% gewijzigd door Splash op 09-08-2005 22:10 ]
Verwijderd
Bedenk wel dat je maar zoveel pixels horizontaal en verticaal hebt en dat flash (of je browser) de floating-point coordinaten om moet rekenen naar integer coordinaten om het op het scherm te krijgen. Hierbij moet hij dus afronden en krijg je dat schokkerige effect (ook wel staircasing genoemd als je rechte lijnen tekent die schuin staan).
De oplossing is anti-aliasing (geen idee of Flash dat ondersteunt).
Misschien kun je proberen je flash-filmpje 2 of 4 (of nog meer) keer zo groot te maken en dan in de browser in de HTML-tag weer te verkleinen.
De oplossing is anti-aliasing (geen idee of Flash dat ondersteunt).
Misschien kun je proberen je flash-filmpje 2 of 4 (of nog meer) keer zo groot te maken en dan in de browser in de HTML-tag weer te verkleinen.
flash maakt gebruik van anti-aliasing. Ook wanneer je de quality op low zet, zodat de anti-aliasing wordt uitgeschakeld, verspringt de hoek van de rechthoek in mijn voorbeeld telkens ca. 3 pixels. Ik ben bang dat dit dus gewoon een beperking van flash is; het vreemde vind ik alleen dat ik er verder nergens iets over kan vinden.
En als je de quality in de HTML op "best" zet?
quality best maakt ook niets uit. Het probleem is overigens al te zien in de authoring tool van flash. ik heb hier even een fla'tje neergezet. wanneer je ver inzoomt en gewoon door de tijdlijn scrubt is goed te zien dat de minimale hoek 0.25° lijkt te zijn.
zow, 2 jaar later heb ik hetzelfde probleem..
ik wil een plaatje 20graden laten draaien in 7 seconden (60fps) en in after effects is dit geen probleem, het eindresultaat is vloeiend.. in flash lijkt het echter niet te kunnen.
de code die ik gebruik is:
_root.onEnterFrame = function () {
rotate_mc._rotation -= 0.03;
};
ik wil een plaatje 20graden laten draaien in 7 seconden (60fps) en in after effects is dit geen probleem, het eindresultaat is vloeiend.. in flash lijkt het echter niet te kunnen.
de code die ik gebruik is:
_root.onEnterFrame = function () {
rotate_mc._rotation -= 0.03;
};
XBOX 360 Gamertag | Mac mini | Macbook | iMac - God Does Not Have a Plan; He is Just a Kid With an Antfarm
Neem eens en kijke bij de Fuse Animation Kit. Met die kit kun je heel simpel animaties scripten. En mijn ervaring is dat deze kit VEEL soepeler loopt als dat het 'onenterframe' enz. gescript is.
erg leuk ding dat Fuse! alleen doet het niets voor rotatie for as far as i can see.. lijkt erop dat flash niet elke graden waarde kan weergeven waardoor trage rotaties choppy worden..beetle71 schreef op woensdag 19 september 2007 @ 23:27:
Neem eens en kijke bij de Fuse Animation Kit. Met die kit kun je heel simpel animaties scripten. En mijn ervaring is dat deze kit VEEL soepeler loopt als dat het 'onenterframe' enz. gescript is.
XBOX 360 Gamertag | Mac mini | Macbook | iMac - God Does Not Have a Plan; He is Just a Kid With an Antfarm
Op je stage een mc "my_mc" plaatsen en onderstaand script.
met Fuse valt dus wel degelijk een rotatie te animeren. Sterker nog, je kan zo'n beetje alle properties van een object animeren. Het mooiste van fuse is dat je ook kan sequencen. Bovendien animeer je in de tijd en niet over frames. Een rotatie van 20 graden in 7 seconden, duurt 7 seconden ongeacht de framerate die de client aankan. Uiteraard gaat het schokken bij een lage framerate.
Het schokken wat ervaren wordt bij een rotatie over een kleine hoek is niet te voorkomen. Je blijft te maken hebben pixels ook al is flash vector.
Flash ActionScript:
1
2
3
4
5
| import com.mosesSupposes.fuse.*; ZigoEngine.register(Fuse,PennerEasing,CustomEasing); var fRotate:Fuse = new Fuse(); fRotate.push([{target: my_mc, _rotation:20, time: 7 , easing:"linear"}]); fRotate.start(); |
met Fuse valt dus wel degelijk een rotatie te animeren. Sterker nog, je kan zo'n beetje alle properties van een object animeren. Het mooiste van fuse is dat je ook kan sequencen. Bovendien animeer je in de tijd en niet over frames. Een rotatie van 20 graden in 7 seconden, duurt 7 seconden ongeacht de framerate die de client aankan. Uiteraard gaat het schokken bij een lage framerate.
Het schokken wat ervaren wordt bij een rotatie over een kleine hoek is niet te voorkomen. Je blijft te maken hebben pixels ook al is flash vector.
" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams
ik zal t zeker s proberen.. maar mn animatie schokte op 60 fps maar ook op 120.. ik heb m nu op 51fps.. maar heb dus niets kunnen roteren.. Dat was eigenlijk de bedoeling voor de achtergrond image in t beginsanderb schreef op vrijdag 21 september 2007 @ 10:45:
Een rotatie van 20 graden in 7 seconden, duurt 7 seconden ongeacht de framerate die de client aankan. Uiteraard gaat het schokken bij een lage framerate.
XBOX 360 Gamertag | Mac mini | Macbook | iMac - God Does Not Have a Plan; He is Just a Kid With an Antfarm
Pagina: 1