mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 22.09.2017 06:44 Benutzername: Passwort: Auto-Login

Thema: [Flash MX2004] getBounds-Problem bei dynamisch erstellten MC vom 18.07.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Multimedia -> [Flash MX2004] getBounds-Problem bei dynamisch erstellten MC
Autor Nachricht
l'Audiophile
Threadersteller

Dabei seit: 16.09.2004
Ort: Berlin
Alter: 36
Geschlecht: Männlich
Verfasst Mo 18.07.2005 07:59
Titel

[Flash MX2004] getBounds-Problem bei dynamisch erstellten MC

Antworten mit Zitat Zum Seitenanfang

Servus,

hab ein Problem mit dem Befehl „getBounds“ und einem dynamisch erstellten Movieclip. Ich bekomme die Grenzen dieses MCs einfach nicht ausgelesen. Habe ich ne Alternative? Stehe etwas auf dem Schlauch.


Der Vollständigkeit halber erst mal das gesamte Script. Hoffentlich sprengts nicht den Rahmen *zwinker*
Wenns fertig ist, wird das eine dynamisch durch Script generierte Scrollbar mit XML-Anbindung. Lächel

Code:

//XML
text_xml = new XML();
text_xml.ignoreWhite = true;
text_xml.load("text.xml");
text_xml.onLoad = function(status) {
if (status) {
xmltext = text_xml.firstChild.firstChild.nodeValue;
delete text_xml;
textcontent();
}
};
// Variablen zur Textformatierung
var textcolor = 0x333333;
var font = "Verdana";
var fontsize = 12;
var align = "right";
//
// VARIABLEN
//
// Positionierung der Elemente
var main_xpos = 20;
var main_ypos = 20;
var content_xpos = 0;
var content_ypos = 0;
var textwidth = 200;
var textheight = 400;
var contentwidth = 200;
var contentheight = 200;
var scroller_xpos = 200;
var bar_xpos = 200;
// Variablen Buttons
var btn_width = 15;
var btn_height = 15;
var btn_up_ypos = 0;
var btn_down_ypos = 185;
var btn_color = 0xFFFFFF;
var btn_tranparency = 100;
var btn_borderthickness = 1;
var btn_bordercolor = 0x000000;
var btn_bordertransparency = 100;
// Variablen Dragger
var dragger_width = 15;
var dragger_height = 60;
var dragger_ypos = 20;
var dragger_color = 0xFFFFFF;
var dragger_tranparency = 100;
var dragger_borderthickness = 1;
var dragger_bordercolor = 0x000000;
var dragger_bordertransparency = 100;
// Variablen Scrollbar
var bar_width = 15;
var bar_height = 200;
var bar_ypos = 0;
var bar_color = 0xCCCCCC;
var bar_tranparency = 50;
var bar_borderthickness = 1;
var bar_bordercolor = 0x777777;
var bar_bordertransparency = 50;
//
var btn_steps = 5;
var path = this;
//
// Erstelle Container
path.createEmptyMovieClip("container", 1000);
container._x = main_xpos;
container._y = main_ypos;
container.width = contentwidth+btn_width;
container.height = contentheight;
path.container.createEmptyMovieClip("boundbox", 1001);
path.container.boundbox._width = contentwidth;
path.container.boundbox._height = contentheight;
path.container.boundbox._x = boundbox_xpos;
path.container.boundbox._y = boundbox_ypos;
path.container.createEmptyMovieClip("contentbox", 1002);
path.container.contentbox._x = content_xpos;
path.container.contentbox._y = content_ypos;
// erstelle Textfeld für den Inhalt
function textcontent() {
path.container.contentbox.createTextField("textfield", 1003, 0, 0, textwidth, textheight);
textproperties = new TextFormat();
textproperties.color = textcolor;
textproperties.font = font;
textproperties.size = fontsize;
textproperties.align = textausrichtung_kb;
with (path.container.contentbox.textfield) {
autosize = "center";
border = true;
multiline = true;
wordWrap = true;
html = true;
embedFonts = false;
htmlText = xmltext;
setTextFormat(textproperties);
}
}
// zeichne Bar
path.container.createEmptyMovieClip("bar", 1010);
path.container.bar.createEmptyMovieClip("bar_border", 1011);
with (path.container.bar) {
beginFill(bar_color, bar_tranparency);
moveTo(bar_xpos, bar_ypos);
lineTo(bar_xpos+bar_width, bar_ypos);
lineTo(bar_xpos+bar_width, bar_ypos+bar_height);
lineTo(bar_xpos, bar_ypos+bar_height);
lineTo(bar_xpos, bar_ypos);
endFill;
}
with (path.container.bar.bar_border) {
lineStyle(bar_borderthickness, bar_bordercolor, bar_bordertransparency);
moveTo(bar_xpos, bar_ypos);
lineTo(bar_xpos+bar_width, bar_ypos);
lineTo(bar_xpos+bar_width, bar_ypos+bar_height);
lineTo(bar_xpos, bar_ypos+bar_height);
lineTo(bar_xpos, bar_ypos);
}
// zeichne Griff
path.container.createEmptyMovieClip("dragger", 1012);
path.container.dragger.createEmptyMovieClip("dragger_border", 1013);
with (path.container.dragger) {
beginFill(dragger_color, dragger_tranparency);
moveTo(scroller_xpos, dragger_ypos);
lineTo(scroller_xpos+dragger_width, dragger_ypos);
lineTo(scroller_xpos+dragger_width, dragger_ypos+dragger_height);
lineTo(scroller_xpos, dragger_ypos+dragger_height);
lineTo(scroller_xpos, dragger_ypos);
endFill;
}
with (path.container.dragger.dragger_border) {
lineStyle(dragger_borderthickness, dragger_bordercolor, dragger_bordertransparency);
moveTo(scroller_xpos, dragger_ypos);
lineTo(scroller_xpos+dragger_width, dragger_ypos);
lineTo(scroller_xpos+dragger_width, dragger_ypos+dragger_height);
lineTo(scroller_xpos, dragger_ypos+dragger_height);
lineTo(scroller_xpos, dragger_ypos);
}
// zeichne Schalter "UP"
path.container.createEmptyMovieClip("btn_up", 1014);
path.container.btn_up.createEmptyMovieClip("btn_up_border", 1015);
with (path.container.btn_up) {
beginFill(btn_color, btn_tranparency);
moveTo(scroller_xpos, btn_up_ypos);
lineTo(scroller_xpos+btn_width, btn_up_ypos);
lineTo(scroller_xpos+btn_width, btn_up_ypos+btn_height);
lineTo(scroller_xpos, btn_up_ypos+btn_height);
lineTo(scroller_xpos, btn_up_ypos);
endFill;
}
with (path.container.btn_up.btn_up_border) {
lineStyle(btn_borderthickness, btn_bordercolor, btn_bordertransparency);
moveTo(scroller_xpos, btn_up_ypos);
lineTo(scroller_xpos+btn_width, btn_up_ypos);
lineTo(scroller_xpos+btn_width, btn_up_ypos+btn_height);
lineTo(scroller_xpos, btn_up_ypos+btn_height);
lineTo(scroller_xpos, btn_up_ypos);
}
// zeichne Schalter "DOWN"
path.container.createEmptyMovieClip("btn_down", 1016);
path.container.btn_down.createEmptyMovieClip("btn_down_border", 1017);
with (path.container.btn_down) {
beginFill(btn_color, btn_tranparency);
moveTo(scroller_xpos, btn_down_ypos);
lineTo(scroller_xpos+btn_width, btn_down_ypos);
lineTo(scroller_xpos+btn_width, btn_down_ypos+btn_height);
lineTo(scroller_xpos, btn_down_ypos+btn_height);
lineTo(scroller_xpos, btn_down_ypos);
endFill;
}
with (path.container.btn_down.btn_down_border) {
lineStyle(btn_borderthickness, btn_bordercolor, btn_bordertransparency);
moveTo(scroller_xpos, btn_down_ypos);
lineTo(scroller_xpos+btn_width, btn_down_ypos);
lineTo(scroller_xpos+btn_width, btn_down_ypos+btn_height);
lineTo(scroller_xpos, btn_down_ypos+btn_height);
lineTo(scroller_xpos, btn_down_ypos);
}
// Technik --> Scrollbar
_root.onLoad = function() {
difference_y = path.container.boundbox._height-path.container.btn_up._height-path.container.btn_down._height;
bounds = path.container.boundbox.getBounds(path.container);
border_top = bounds.yMin+path.container.btn_up._height;
bottom = bounds.yMax-(path.container.btn_down._height+path.container.dragger._height);
};
function scrollbar() {
path.container.contentbox._y = -(((path.container.dragger._y-border_top)/difference_y)*(path.container.contentbox._height-path.container.boundbox._height));
trace("1: "+bounds.yMin+" 2: "+bounds.yMax);
}
// Mausereignisse
_root.onMouseDown = function() {
if (path.container.dragger.hitTest(_root._xmouse, _root._ymouse)) {
path.container.dragger.startDrag(false, path.container.dragger._x, border_top, path.container.dragger._x, bottom);
scrolling = true;
}
if (path.container.btn_up.hitTest(_root._xmouse, _root._ymouse)) {
btn_up_scrolling = true;
}
if (path.container.btn_down.hitTest(_root._xmouse, _root._ymouse)) {
btn_down_scrolling = true;
}
};
_root.onMouseUp = function() {
stopDrag();
scrolling = false;
btn_up_scrolling = false;
btn_down_scrolling = false;
};
// Scroll-Grenzen abfragen
_root.onEnterFrame = function() {
if (btn_up_scrolling) {
if ((path.container.dragger._y-btn_steps)>border_top) {
path.container.dragger._y -= btn_steps;
bt_scrolling = true;
}
else {
btn_up_scrolling = false;
}
}
if (btn_down_scrolling) {
if ((path.container.dragger._y+btn_steps)<bottom) {
path.container.dragger._y += btn_steps;
bt_scrolling = true;
}
else {
btn_down_scrolling = false;
}
}
if (bt_scrolling) {
scrollbar();
}
if (scrolling) {
scrollbar();
newY = path.container.dragger._y;
}
};


So und genau hier liegt der Hund begraben:
Code:

bounds = path.container.boundbox.getBounds(path.container);
border_top = bounds.yMin+path.container.btn_up._height;
bottom = bounds.yMax-(path.container.btn_down._height+path.container.dragger._height);


Da will ich die yMin und yMax auslesen, der Instanz „container“, die hier erstellt wird:

Code:

// Erstelle Container
path.createEmptyMovieClip("container", 1000);
container._x = main_xpos;
container._y = main_ypos;
container.width = contentwidth+btn_width;
container.height = contentheight;


Vielleicht hat ja einer ne Idee. Ich tüftele mal weiter.


Gruß PeJot


Vielleicht schaut Tuxedo ja mal vorbei *zwinker* Lächel
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
l'Audiophile
Threadersteller

Dabei seit: 16.09.2004
Ort: Berlin
Alter: 36
Geschlecht: Männlich
Verfasst So 07.08.2005 16:14
Titel

Antworten mit Zitat Zum Seitenanfang

Servus Kinners *zwinker*

Hab noch'n bischen daran rumgeschraubt und teilweise neue Ansätze gemacht.

Jetzt funktionierts, wenn auch sehr buggy. Irgendwas stimmt mit der Scroll-Physik noch nicht ganz. <-- Schuld!

Das fällt vor allem auf, wenn man mit den Variablen (hab ich komplett auskommentiert) oben ein bischen rumspielt.

Das Script funktioniert ohne jeglichen Elemente. Also einfach Copy-Paste in Flash und testen. Ihr faulen Schweine!!! Grins

Vielleicht hat ja jemand Zeit, ein bischen rumzuprobieren. Lächel

Es braucht keine Codeschnipsel oder fertige Scripts. Würde mich über allerdings sehr über logische Ansätze zur Verbesserung der Physik freuen. Coden kann ichs dann selber. *hehe* Hoffentlich liest JanG das nicht, hehe.

Keine Hektik; es hat Zeit. Grins
Ich danke euch schon mal im Vorraus.

Code:

//##########################################################
//XML
text_xml = new XML();
text_xml.ignoreWhite = true;
text_xml.load("text.xml");
text_xml.onLoad = function(status) {
   if (status) {
      xmltext = "Alternativtext<br><br><br><br><br><br><br><br>Alternativtext<br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>Alternativtext<br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>Alternativtext<br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>Alternativtext<br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>Alternativtext<br><br><br><br><br><br><br><br>Alternativtext <br><br><br><br><br><br><br><br>"//text_xml.firstChild.firstChild.nodeValue;
      delete text_xml;
      textcontent();
   }
};
// Variablen zur Textformatierung
var textcolor = 0x333333;
var font = "Verdana";
var fontsize = 20;
var align = "left";
//##########################################################
//##########################################################
// VARIABLEN
//
// Positionierung der Elemente
// position des gesamten elements
var main_xpos = 20;
var main_ypos = 20;
// position der contentbox innerhalb des hauptelements
var content_xpos = 0;
var content_ypos = 0;
// eigenschaften der contentbox --> sollten >= der eigenschaften des textfeldes sein
var contentwidth = 200;
var contentheight = 3300;
// textfeldeigenschaften innerhalb der contentbox
var textwidth = 200;
var textheight = 3300;
// x-position des scrollers
var scroller_xpos = contentwidth;
// eigenschaften der bounding-box
var boundbox_height = 450;
var boundbox_width = contentwidth;
// eigenschaften der buttons
var btn_width = 15;
var btn_height = 15;
var btn_up_ypos = 0;
var btn_down_ypos = boundbox_height-btn_height;
var btn_color = 0xFFFFFF;
var btn_transparency = 100;
var btn_borderthickness = 0;
var btn_bordercolor = 0x000000;
var btn_bordertransparency = 100;
// eigenschaften des draggers
var dragger_width = 15;
var scroller_size_factor = 2.833;
var dragger_height = Math.round((boundbox_height-(btn_height*2))/scroller_size_factor);
var dragger_ypos = content_xpos+btn_height;
var dragger_color = 0xFFFFFF;
var dragger_transparency = 100;
var dragger_borderthickness = 0;
var dragger_bordercolor = 0x000000;
var dragger_bordertransparency = 100;
// eigenschaften der scrollbar
var bar_width = 15;
var bar_height = boundbox_height;
var bar_ypos = 0;
var bar_color = 0xCCCCCC;
var bar_transparency = 50;
var bar_borderthickness = 0;
var bar_bordercolor = 0x777777;
var bar_bordertransparency = 50;
//
// Scroll Speed 1-15
var scroll_speed = 5;
var path = this;
//##########################################################
//##########################################################
// Erstelle Container
path.createEmptyMovieClip("container", 1000);
with (path.container) {
   _x = main_xpos;
   _y = main_ypos;
}
path.container.createEmptyMovieClip("boundbox", 1001);
with (path.container.boundbox) {
   _width = boundbox_height;
   _height = boundbox_height;
   _x = 0;
   _y = 0;
}
path.container.createEmptyMovieClip("mask_mc", 1004);
with (path.container.mask_mc) {
   beginFill(0xff0000, bar_transparency);
   moveTo(content_xpos, content_ypos);
   lineTo(content_xpos+boundbox_width, content_ypos);
   lineTo(content_xpos+boundbox_width, content_ypos+boundbox_height);
   lineTo(content_xpos, content_ypos+boundbox_height);
   lineTo(content_xpos, content_ypos);
}
path.container.createEmptyMovieClip("contentbox", 1002);
with (path.container.contentbox) {
   _x = content_xpos;
   _y = content_ypos;
   setMask(path.container.mask_mc);
}
//##########################################################
// erstelle Textfeld für den Inhalt
function textcontent() {
   path.container.contentbox.createTextField("textfield", 1003, 0, 0, textwidth, textheight);
   textproperties = new TextFormat();
   textproperties.color = textcolor;
   textproperties.font = font;
   textproperties.size = fontsize;
   textproperties.align = textausrichtung_kb;
   with (path.container.contentbox.textfield) {
      autosize = "center";
      border = true;
      multiline = true;
      wordWrap = true;
      html = true;
      embedFonts = false;
      htmlText = xmltext;
      setTextFormat(textproperties);
   }
}
// zeichne Bar
path.container.createEmptyMovieClip("bar", 1010);
path.container.bar.createEmptyMovieClip("bar_border", 1011);
with (path.container.bar) {
   beginFill(bar_color, bar_transparency);
   moveTo(bar_xpos, bar_ypos);
   lineTo(bar_xpos+bar_width, bar_ypos);
   lineTo(bar_xpos+bar_width, bar_ypos+bar_height);
   lineTo(bar_xpos, bar_ypos+bar_height);
   lineTo(bar_xpos, bar_ypos);
   endFill;
}
with (path.container.bar.bar_border) {
   lineStyle(bar_borderthickness, bar_bordercolor, bar_bordertransparency);
   moveTo(scroller_xpos, bar_ypos);
   lineTo(scroller_xpos+bar_width, bar_ypos);
   lineTo(scroller_xpos+bar_width, bar_ypos+bar_height);
   lineTo(scroller_xpos, bar_ypos+bar_height);
   lineTo(scroller_xpos, bar_ypos);
}
// zeichne Griff
path.container.createEmptyMovieClip("dragger", 1012);
path.container.dragger.createEmptyMovieClip("dragger_border", 1013);
with (path.container.dragger) {
   beginFill(dragger_color, dragger_transparency);
   moveTo(scroller_xpos, dragger_ypos);
   lineTo(scroller_xpos+dragger_width, dragger_ypos);
   lineTo(scroller_xpos+dragger_width, dragger_ypos+dragger_height);
   lineTo(scroller_xpos, dragger_ypos+dragger_height);
   lineTo(scroller_xpos, dragger_ypos);
   endFill;
}
with (path.container.dragger.dragger_border) {
   lineStyle(dragger_borderthickness, dragger_bordercolor, dragger_bordertransparency);
   moveTo(scroller_xpos, dragger_ypos);
   lineTo(scroller_xpos+dragger_width, dragger_ypos);
   lineTo(scroller_xpos+dragger_width, dragger_ypos+dragger_height);
   lineTo(scroller_xpos, dragger_ypos+dragger_height);
   lineTo(scroller_xpos, dragger_ypos);
}
// zeichne Schalter "UP"
path.container.createEmptyMovieClip("btn_up", 1014);
path.container.btn_up.createEmptyMovieClip("btn_up_border", 1015);
with (path.container.btn_up) {
   beginFill(btn_color, btn_transparency);
   moveTo(scroller_xpos, btn_up_ypos);
   lineTo(scroller_xpos+btn_width, btn_up_ypos);
   lineTo(scroller_xpos+btn_width, btn_up_ypos+btn_height);
   lineTo(scroller_xpos, btn_up_ypos+btn_height);
   lineTo(scroller_xpos, btn_up_ypos);
   endFill;
}
with (path.container.btn_up.btn_up_border) {
   lineStyle(btn_borderthickness, btn_bordercolor, btn_bordertransparency);
   moveTo(scroller_xpos+btn_borderthickness, btn_up_ypos+btn_borderthickness);
   lineTo(scroller_xpos+btn_width-(btn_borderthickness*2), btn_up_ypos+btn_borderthickness);
   lineTo(scroller_xpos+btn_width-(btn_borderthickness*2), btn_up_ypos+btn_height-(btn_borderthickness*2));
   lineTo(scroller_xpos+btn_borderthickness, btn_up_ypos+btn_height-(btn_borderthickness*2));
   lineTo(scroller_xpos+btn_borderthickness, btn_up_ypos+btn_borderthickness);
}
// zeichne Schalter "DOWN"
path.container.createEmptyMovieClip("btn_down", 1016);
path.container.btn_down.createEmptyMovieClip("btn_down_border", 1017);
with (path.container.btn_down) {
   beginFill(btn_color, btn_transparency);
   moveTo(scroller_xpos, btn_down_ypos);
   lineTo(scroller_xpos+btn_width, btn_down_ypos);
   lineTo(scroller_xpos+btn_width, btn_down_ypos+btn_height);
   lineTo(scroller_xpos, btn_down_ypos+btn_height);
   lineTo(scroller_xpos, btn_down_ypos);
   endFill;
}
with (path.container.btn_down.btn_down_border) {
   lineStyle(btn_borderthickness, btn_bordercolor, btn_bordertransparency);
   moveTo(scroller_xpos+btn_borderthickness, btn_down_ypos+btn_borderthickness);
   lineTo(scroller_xpos+btn_width-(btn_borderthickness*2), btn_down_ypos+btn_borderthickness);
   lineTo(scroller_xpos+btn_width-(btn_borderthickness*2), btn_down_ypos+btn_height-(btn_borderthickness*2));
   lineTo(scroller_xpos+btn_borderthickness, btn_down_ypos+btn_height-(btn_borderthickness*2));
   lineTo(scroller_xpos+btn_borderthickness, btn_down_ypos+btn_borderthickness);
}
//##########################################################
//##########################################################
// Technik --> Scrollbar
_root.onLoad = function() {
   difference_y = boundbox_height-path.container.btn_up._height-path.container.btn_down._height;
   border_top = content_ypos;
   bottom = content_ypos+boundbox_height-(path.container.dragger._height+path.container.btn_up._height+path.container.btn_down._height);
};
function scrollbar() {
   // y-position des inhalts = (aktuelle position der scrollbar - obere grenze / scrolldifferenz) * (höhe des inhalts - höhe der boundbox)
   path.container.contentbox._y = -((path.container.dragger._y-border_top)/difference_y)*(contentheight+boundbox_height+path.container.dragger._height+path.container.btn_up._height+path.container.btn_down._height);
}
//##########################################################
// Mausereignisse
_root.onMouseDown = function() {
   if (path.container.dragger.hitTest(_root._xmouse, _root._ymouse)) {
      path.container.dragger.startDrag(false, path.container.dragger._x, border_top, path.container.dragger._x, bottom);
      scrolling = true;
   }
   if (path.container.btn_up.hitTest(_root._xmouse, _root._ymouse)) {
      btn_up_scrolling = true;
   }
   if (path.container.btn_down.hitTest(_root._xmouse, _root._ymouse)) {
      btn_down_scrolling = true;
   }
};
_root.onMouseUp = function() {
   stopDrag();
   scrolling = false;
   btn_up_scrolling = false;
   btn_down_scrolling = false;
};
_root.onEnterFrame = function() {
   if (btn_up_scrolling) {
      if ((path.container.dragger._y)>border_top) {
         path.container.dragger._y -= scroll_speed;
         bt_scrolling = true;
      }
      else {
         btn_up_scrolling = false;
      }
   }
   if (btn_down_scrolling) {
      if ((path.container.dragger._y)<bottom) {
         path.container.dragger._y += scroll_speed;
         bt_scrolling = true;
      }
      else {
         btn_down_scrolling = false;
      }
   }
   if (bt_scrolling) {
      scrollbar();
   }
   if (scrolling) {
      scrollbar();
   }
};



Gruß PeJot


// Edit:
hab die Formatierung geädert; die hatte nämlich das MGI-Layout zersäbelt. Grins


Zuletzt bearbeitet von l'Audiophile am So 07.08.2005 16:59, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
common svensson

Dabei seit: 23.06.2005
Ort: -
Alter: 35
Geschlecht: Männlich
Verfasst So 07.08.2005 17:57
Titel

Antworten mit Zitat Zum Seitenanfang

hi pejot,

gut, dass der quelltext nicht mehr linksbündig ist *Thumbs up!* Leider funktioniert dein Code nur, wenn man eine dummy-datei ("text.xml") hat, das könnte einige willige tester irritieren...

zur scroller-physik: ich habe die funktion scrollbar() folgendermaßen geändert:

Code:
function scrollbar() {
   // y-position des inhalts = (aktuelle position der scrollbar - obere grenze / scrolldifferenz) * (höhe des inhalts - höhe der boundbox)

   var scrollmax = boundbox_height-dragger_height-2*btn_height;
   path.container.contentbox._y = -(path.container.dragger._y/scrollmax)*(contentheight-boundbox_height);
 }


Du hast die formel im as-kommentar schon richtig hingeschrieben, ich habe nur nicht ganz verstanden, wie du auf diese lange formel für die zweite Klammer (höhe der inhalts - höhe der boundbox) gekommen bist... Außerdem stimmt die Berechnung für die Scrolldifferenz (Variable "border_top"?) nicht, glaube ich. Damit meinst du die maximale _y-Position vom Dragger, oder? Die habe ich jetzt einfach in scrollmax reingeschrieben. So ganz blicke ich durch die ganzen Variablen noch nicht durch... Man sieht übrigens den unteren Pixelrand vom content nicht, weil entweder die Maske nicht hoch genug ist, oder (ist hier wohl eher der Fall) weil der untere Button vom Scroller zu niedrig sitzt.

Das Scrollen mit den Hoch/Runter-Buttons funktioniert außerdem noch nicht ganz sauber, wenn man von ganz unten nach ganz oben scrollt (und umgekehrt), dann sitzt der Content nie ganz an der äußersten Position.

Wenn du willst, dass man den Scroller butterweich & unabhängig von der Framerate bewegen kann, dann füg einfach am Ende noch folgenden Code ein:

Code:
_root.onMouseMove = function () {
   updateAfterEvent();
}
  View user's profile Private Nachricht senden
l'Audiophile
Threadersteller

Dabei seit: 16.09.2004
Ort: Berlin
Alter: 36
Geschlecht: Männlich
Verfasst So 07.08.2005 18:20
Titel

Antworten mit Zitat Zum Seitenanfang

common svensson hat geschrieben:
hi pejot,

gut, dass der quelltext nicht mehr linksbündig ist *Thumbs up!* Leider funktioniert dein Code nur, wenn man eine dummy-datei ("text.xml") hat, das könnte einige willige tester irritieren...


Schau mal genauer hin! Da ist nen Alternativtext. Muss halt nur die XML-Anweisung auskommentieren *zwinker*

common svensson hat geschrieben:

zur scroller-physik: ich habe die funktion scrollbar() folgendermaßen geändert:

[code]function scrollbar() {
// y-position des inhalts = (aktuelle position der scrollbar - obere grenze / scrolldifferenz) * (höhe des inhalts - höhe der boundbox)

var scrollmax = boundbox_height-dragger_height-2*btn_height;
path.container.contentbox._y = -(path.container.dragger._y/scrollmax)*(contentheight-boundbox_height);
}


Danke, aber der „Up-Down-Button-Bug“ besteht weiterhin. Kleiner Test – versuch mal den Dragger auf ne beliebige Position zu schieben und dann betätige den Up-Button bis zum Maximun. Und dabei steh ich halt aufm Schlauch momentan. Kann das Ding echt nicht mehr sehen. *zwinker* Wenn ich drann denke, dass ich anschließend noch ne AS 2-0-Klasse daraus machen wil --> Meine Güte! Grins

common svensson hat geschrieben:

Du hast die formel im as-kommentar schon richtig hingeschrieben, ich habe nur nicht ganz verstanden, wie du auf diese lange formel für die zweite Klammer (höhe der inhalts - höhe der boundbox) gekommen bist... Außerdem stimmt die Berechnung für die Scrolldifferenz (Variable "border_top"?) nicht, glaube ich. Damit meinst du die maximale _y-Position vom Dragger, oder? Die habe ich jetzt einfach in scrollmax reingeschrieben.


Genau die isses. Lächel

common svensson hat geschrieben:
Man sieht übrigens den unteren Pixelrand vom content nicht, weil entweder die Maske nicht hoch genug ist, oder (ist hier wohl eher der Fall) weil der untere Button vom Scroller zu niedrig sitzt.


Die Maske ist momentan nur Provisorium zum Testen. Muss noch um jeweils einen Pixel vergrößert werden, wegen dem Border des Contentbereichs. Lächel

common svensson hat geschrieben:

Das Scrollen mit den Hoch/Runter-Buttons funktioniert außerdem noch nicht ganz sauber, wenn man von ganz unten nach ganz oben scrollt (und umgekehrt), dann sitzt der Content nie ganz an der äußersten Position.


Genau das ist das Problem welches ich habe. Menno!


common svensson hat geschrieben:

Wenn du willst, dass man den Scroller butterweich & unabhängig von der Framerate bewegen kann, dann füg einfach am Ende noch folgenden Code ein:

[code]_root.onMouseMove = function () {
updateAfterEvent();
}[/code]



Ich weiß, ich weiß. *zwinker* Aber solche Späße erst zum Schluss. Mach auch nochn Delay für nen Wurfeffekt rein und solche Sachen. aber erst später.

Kann das Ding (zumindestens heute) nicht mehr sehen. Grins


Gruß PeJot


Zuletzt bearbeitet von l'Audiophile am So 07.08.2005 18:33, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
common svensson

Dabei seit: 23.06.2005
Ort: -
Alter: 35
Geschlecht: Männlich
Verfasst So 07.08.2005 19:28
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Schau mal genauer hin! Da ist nen Alternativtext. Muss halt nur die XML-Anweisung auskommentieren


hab ich ja Grins den Alternativtext benutze ich auch, ich habe mir aber eine leere text.xls abgespeichert, damit text_xml.onLoad() überhaupt ausgeführt wird. Die XML-Sachen auskommentieren würde auch gehen (sofern man weiß, wie), dann muss der Aufruf von textcontent() aber ganz nach unten, damit die Objekte schon da sind, in die der Text reingesetzt wird. "einfach Copy-Paste in Flash und testen" geht da jedenfalls nicht so einfach Lächel

Zu dem Up/Down-Problem... mit folgenden Änderungen sollte es funktionieren:

Code:
_root.onEnterFrame = function() {
   if (btn_up_scrolling) {
      if ((path.container.dragger._y)>(border_top+scroll_speed)) {
         path.container.dragger._y -= scroll_speed;
         bt_scrolling = true;
      }
      else {
       path.container.dragger._y = 0;
         btn_up_scrolling = false;
      }
   }
   if (btn_down_scrolling) {
      if ((path.container.dragger._y)<(bottom-scroll_speed)) {
         path.container.dragger._y += scroll_speed;
         bt_scrolling = true;
      }
      else {
        path.container.dragger._y = bottom;
         btn_down_scrolling = false;
      }
   }
   if (bt_scrolling) {
      scrollbar();
   }
   if (scrolling) {
      scrollbar();
   }
};


Wenn der dragger vorher z.B. auf _y = 2 stand, dann wurde beim hochscrollen noch einmal scroll_speed abgezogen, und der dragger war auf -3 oder so. Wenn der Dragger jetzt außerhalb landet, wird einfach die äußerste Position gesetzt.
  View user's profile Private Nachricht senden
l'Audiophile
Threadersteller

Dabei seit: 16.09.2004
Ort: Berlin
Alter: 36
Geschlecht: Männlich
Verfasst So 07.08.2005 20:02
Titel

Antworten mit Zitat Zum Seitenanfang

Ahhh, jetzt sag nicht, dass es an der Kleinigkeit gelegen hat? Au weia! Geil.
So, in der Richtung, scroll_speed dazu zu addieren und abzuziehen war ich auch schon, nur hatte ich vor lauter Bäumen den Wald nicht mehr gesehen und das Zurücksetzen in der else-Anweisung verpeilt. * Wo bin ich? *
Es sind immer die kleinen Sachen die erst kurz vor der Fertigstellung des Projekts auftreten und Probleme bereiten. * grmbl *
Mist, dann muss ich mich je heute doch noch an die Klasse setzen * grmbl * *zwinker* .

Danke und schönen Sonntag-Abend noch. *Thumbs up!*

Gruß PeJot
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen [Flash] Sound dynamisch laden
[flash] bilder dynamisch in flashfilm reinholen ???
[Flash MX] Linkliste mit dynamisch geladenen Inhalten
Flash-Seiten dynamisch machen, Daten aus SQL ...
[Flash] Texte dynamisch laden + formatierung
Flash Content Dynamisch erweitern (News)
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Multimedia


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.