Flash og XML
hej jeg har hentet en XML styrret menu (som virker fint efter en ordentligt customisering) men jeg vil gerne tilføje noget funktionalitet. som er over mit hoved.SPØRGSMÅLET HAR FRYGTELIGT MEGET KODE, MEN BURDE VÆRE RET SIMPELT FOR EN SOM VED HAVD DET DREJDER SIG OM,SANDSYNLIGVIS BLOT TILFØJELSE AT 3-4 LINJERS KODE ?
Hvordan er det muligt at:
1: tilføje kode i XML'en som fungerer ligesom root_gotoAndStop("lable1"); ville gøre i flash. altså at hoppe fra frame eller framelable i flash via XML indputtet.
min flash skal fungere over 5 frames (intro og 4 munupunkter)
så klikket på menuen skal hoppe flash filmen til en given frame
(og gerne hvis der muligt lade externe swf ind, ikke super nødvendigt dog da jeg kan gøre det med frameaction i flash jo.
2: linket skal fungere som an almindelig getURL i flash (kan egentligt også klares med en framaction hvis spørgsmål 1 er muligt) men det ville være fedt hvis man også kunne det fra XML'en. altså en open: _blank html side.
lad mig med det samme sige jeg IKKE er den store forstand på XML
og mit AS er midelmådigt. (mildt sagt) :-)
og her er koden så:
FRAME1 kode I flash:
import it.sephiroth.TreeDnd
// set some style to the component
var theTree:mx.controls.Tree = dnd.getTree();
theTree.setStyle('fontFamily','font1')
theTree.setStyle('fontSize',8);
theTree.setStyle('embedFonts', true);
theTree.setStyle('backgroundColor','0xFFFFFF');
theTree.setStyle('rollOverColor','0xE9E9F3');
theTree.setStyle('selectionColor','0xBCCCDF');
theTree.setStyle('textSelectedColor','0xFFFFFF');
theTree.setStyle('openDuration', 100);
theTree.setStyle('selectionDuration',0);
theTree.setStyle("disclosureClosedIcon", "iconPlus")
theTree.setStyle ("disclosureOpenIcon","iconMinus");
dnd.setStyle("separatorColor", '0xFF0000');
theTree.rowHeight = 20;
theTree.vScrollPolicy = "auto"
theTree.iconFunction = function(item){
if( this.getIsBranch(item)){
return "folder_icon"
} else {
return "node_icon"
}
}
// define event listener
var dndList:Object = new Object();
dndList.double_click = function(evt:Object)
{
testo.text = evt.type
}
dndList.drag_start = function(evt:Object)
{
testo.text = evt.type
}
dndList.drag_fail = function(evt:Object)
{
testo.text = evt.type
}
dndList.drag_complete = function(evt:Object)
{
trace('drag complete')
testo.text = evt.type
}
dndList.drag_target = function(evt:Object)
{
trace('drag_target')
evt.targetMc.text = "Dropped: " + evt.sourceNode
}
// ***********************************
// set the event listeners
// ***********************************
this.dnd.addEventListener('double_click', dndList);
this.dnd.addEventListener('drag_start', dndList);
this.dnd.addEventListener('drag_fail', dndList);
this.dnd.addEventListener('drag_complete', dndList);
this.dnd.addEventListener('drag_target', dndList); // when an item is dropped over a defined target
this.dnd.dropTarget = [testo] // defined a drop target
/**
you can define also custom drag and drop functions
this.dnd.dragFunction = function(item:XMLNode){
// return if item can be dragged
return true;
}
this.dnd.dropFunction = function(source:XMLNode, target:XMLNode){
// return if dragged item can be dropped into the target item
return true
}
**/
// ***********************************
// Now load an XML into Tree component
// ***********************************
var _xml:XML = new XML();
_xml.ignoreWhite = true
_xml.onLoad = function(){
dnd.getTree().dataProvider = this.firstChild
}
_xml.load("example.xml");
FRAME1 kode (andet lag) I Flash:
import it.sephiroth.TreeDnd
var check_listener:Object = new Object();
check_listener.click = function(evt:Object){
var data:String = evt.target.label
var obj_string:Number = 0
if( data == 'DEFAULT' or data == 'DENYALL')
{
for(var a = 0; a < 6; a++)
{
if( evt.target._parent['cb_' + a] != evt.target)
{
evt.target._parent['cb_' + a].selected = false
}
}
} else {
evt.target._parent.cb_0.selected = false
evt.target._parent.cb_1.selected = false
}
for(var a = 0; a < 6; a++){
if( evt.target._parent['cb_' + a].selected == true){
obj_string |= TreeDnd[evt.target._parent['cb_' + a].label]
}
}
trace(obj_string)
evt.target._parent.dnd.dragRules = obj_string
trace( evt.target._parent.dnd.dragRules )
}
this.cb_0.addEventListener('click', check_listener);
this.cb_1.addEventListener('click', check_listener);
this.cb_2.addEventListener('click', check_listener);
this.cb_3.addEventListener('click', check_listener);
this.cb_4.addEventListener('click', check_listener);
this.cb_5.addEventListener('click', check_listener);
for(var a = 0;a < 6; a++){
this['cb_' + a].setStyle('fontFamily','font1')
this['cb_' + a].setStyle('fontSize',8);
this['cb_' + a].setStyle('embedFonts', true);
}
testo.setStyle('fontFamily','font1')
testo.setStyle('fontSize',8);
testo.setStyle('embedFonts', true);
-----------------------------------------
Og her er XML koden:
<?xml version="1.0" encoding="iso-8859-1"?>
<node data="id=1" label="Welcome - website" icon="folderYellowClosed">
<node isOpen="" data="id=233" label="HOVEDMENU1">
<node data="id=245" label="SUB1_0"/>
<node data="id=245" label="SUB1_1"/>
<node data="id=245" label="SUB1_2"/>
<node data="id=245" label="SUB1_3"/>
<node data="id=245" label="SUB1_4"/>
</node>
<node isOpen="" data="id=305" label="HOVEDMENU2">
<node data="id=621" label="SUB2_1"/>
<node data="id=625" label="CSUB2_2"/>
<node data="id=621" label="SUB2_3"/>
<node data="id=625" label="SUB2_4"/>
<node data="id=625" label="SUB2_5"/>
<node data="id=621" label="SUB2_6"/>
<node data="id=625" label="SUB2_7"/>
</node>
<node isOpen="" data="id=325" label="HOVEDMENU3">
<node data="id=329" label="SUB3_1"/>
<node data="id=333" label="SUB3_2"/>
<node data="id=337" label="SUB3_3"/>
</node>
<node isOpen="" data="id=369" label="HOVEDMENU4">
<node data="id=373" label="SUB4_1"/>
<node data="id=377" label="SUB4_1"/>
</node>
------------------------
please please :-)
