Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-03-2004, 16:44   #1 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
AS-Tween > Rundungsfehler

Hallo,
ich scaliere mit folgender Funktion einen braunen Kästchen-MC.
ActionScript:
  1. scal = function(zb, zh) {
  2.     content.onEnterFrame = function() {
  3.         this._x = 10;
  4.         this._y = 60;
  5.         this._width += (zb - this._width)/20;
  6.         this._height+= (zh - this._height)/20;
  7.         /*trace(this._height + " --- " + Math.ceil(this._height));
  8.         trace(this._width + " --- " + Math.ceil(this._width));
  9.         trace("======================");*/   
  10.     }
  11. };

Jetzt will ich aber, dass das Script abbricht, sobald ein Näherungswert erreicht ist. Diesen Näherungswert würde ich gerne per Eingabe definieren können.
Wie sieht dann das Script aus?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 23-03-2004, 18:30   #2 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
mit ner if abfrage und
ActionScript:
  1. delete this.onEnterFrame;

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 23-03-2004, 18:41   #3 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
*g* Ja des weiß ich auch. des Problem ist, dass dieses Script falsch rundet Es rundet zB den Wert 200 auf 201, weil er nur bis zur Genauigkeit von 200.85 gerechnet wird.
Soll ich mal mein getracetes zeigen?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 23-03-2004, 18:47   #4 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
yep, das prob kenn ich...
schau doch mal in die easing functions von robert penner... ?

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 23-03-2004, 19:00   #5 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Hab mich mit dessen Script bis jetzt noch nicth richtig befasst. Könntest du mir da einen Link geben? Aber eigetnlich dürfte das Script dazu ja nicht zuu schwer sein. Keine Ideen?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 23-03-2004, 19:18   #6 (permalink)
Hirnverbrannt
 
Benutzerbild von NastyFrog
 
Registriert seit: Aug 2001
Ort: AUSTRIA
Beiträge: 2.020
Rund doch einfach immer ab. Ich versteh das Problem dahinter nicht wirklich.
__________________
50 Seiten hardcore ActionScript von den Grundlagen bis zu 3D Darstellungen.... eben eine Abendlektüre.

Dogs fucked the Pope, no fault of mine. Watch out! ... Why money? My name is Brinks; I was born ... born? Get sheep over side ... women and children to armored car ... orders from Captain Zeep.(Hunter S. Thompson)
NastyFrog ist offline   Mit Zitat antworten
Alt 23-03-2004, 19:42   #7 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Bei anderen Zahlen ist es ja genau anders rum. Da komt die Zahl net ganz bis zum soll-Wert hin.
Ich hab mal meine Datei mitdrangehangen...
Angehängte Dateien
Dateityp: rar index.rar (3,5 KB, 5x aufgerufen)
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 23-03-2004, 20:37   #8 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
des liegt am teiler "20"!!
probiers mal mit "19"
ActionScript:
  1. scal = function (zb, zh, mc, speed) {
  2.     mc.onEnterFrame = function() {
  3.         this._x = 10;
  4.         this._y = 60;
  5.         this._width += ((zb-this._width)/speed);
  6.         this._height += ((zh-this._height)/speed);
  7.         if ((Math.ceil(this._width) == zb) && (Math.ceil(this._height) == zh)) {
  8.             delete this.onEnterFrame;
  9.         }
  10.     };
  11. };
  12. scal(500, 500, content, 19);
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 24-03-2004, 05:30   #9 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Dachte ich mir schon fast. Aber wie kann man rausfinden, welcher Teiler immer "gute" Werte liefert?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 24-03-2004, 08:25   #10 (permalink)
eeeek!
 
Benutzerbild von juggernart
 
Registriert seit: Aug 2002
Ort: Augsburg
Beiträge: 210
Hi.
Ich hab das mal so gemacht:

ActionScript:
  1. MovieClip.prototype.setDecellTween = function(pEndW, pEndH, pFric, pLimit) {
  2.     this.endW = pEndW;
  3.     this.endH = pEndH;
  4.     this.friction = pFric;
  5.     this.limit = pLimit;
  6.     this.w = this._width;
  7.     this.h = this._height;
  8.     this.onEnterFrame = this.decellTween;
  9. };
  10. MovieClip.prototype.decellTween = function() {
  11.     var diffW = this.endW-this.w;
  12.     var diffH = this.endH-this.h;
  13.     var distW = diffW/this.friction;
  14.     var distH = diffH/this.friction;
  15.     Math.abs(diffW)>this.limit ? this.w += distW : this.w=this.endW;
  16.     Math.abs(diffH)>this.limit ? this.h += distH : this.h=this.endH;
  17.     this._width = this.w;
  18.     this._height = this.h;
  19.     if (this._width == this.endW && this._height == this.endH) {
  20.         delete this.onEnterFrame;
  21.     }
  22. };

content._x = 10;
content._y = 60;
content.setDecellTween(500, 200, 4, 0.5);
juggernart ist offline   Mit Zitat antworten
Alt 24-03-2004, 12:02   #11 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
@Rusty:
Mit deinem Script klappt das auch nicht so ganz... Selbst mit dem Teiler 19 wird nicht immer passend gerundet.

@juggernart:
Deine Methode mit dem Limit scheint mir recht passend. Ich werd's mal umschreiben für mich!

Danke für die Posts!
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 24-03-2004, 12:04   #12 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Mir ist jetzt noch eine Methode eingefallen:
Man könnte den letten gerundeten Wert speichern und sobald, der vorhergehende mit dem aktuellen übereinstimmt, weiß ich, dass der Soll-Wert jetzt näherungsweise erreicht ist. Ist vielleicht noch das leichteste...
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 24-03-2004, 16:05   #13 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Hey, ihr.
Ich habe das jetzt ganz einfach gelöst:
ActionScript:
  1. scal = function(zb, zh) {
  2.     content.onEnterFrame = function() {
  3. /*        this._x = 10;
  4.         this._y = 60;
  5.         this._width += (zb - this._width)/19;
  6.         this._height+= (zh - this._height)/19;
  7. */
  8.         DiffLimit = 1;
  9.         WidthDiff = Math.abs(this._width - zb);
  10.         HeightDiff = Math.abs(this._height - zh);
  11.  
  12.         if(WidthDiff < DiffLimit && HeightDiff < DiffLimit) {
  13.             delete this.onEnterFrame;
  14.         }
  15.     }
  16. };
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 24-03-2004, 17:33   #14 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Hehe!
ActionScript:
  1. scal = function (zb, zh, mc, speed) {
  2.     mc.onEnterFrame = function() {
  3.         this._x = 10;
  4.         this._y = 60;
  5.         this._width += ((zb-this._width)/speed);
  6.         this._height += ((zh-this._height)/speed);
  7.         if ((Math.abs(Math.ceil(this._width)) == zb) && (Math.abs(Math.ceil(this._height)) == zh)) {
  8.             delete this.onEnterFrame;
  9.         }
  10.     };
  11. };
  12. scal(500, 500, content, 28);
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 24-03-2004, 17:40   #15 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Nene, Rusty. So geht das nicht! Mit den Werten 500 und 500 zwar schon, aber das Script läuft dann nicht für jede beliebige Werte!
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele