topical media & game development
[] readme course(s) preface I 1 2 II 3 4 III 5 6 7 IV 8 9 10 V 11 12 afterthought(s) appendix reference(s) example(s) resource(s) _

talk show tell print

bridge.js



  /*
  Copyright � 2006 Adobe Systems Incorporated
  */
  
  var bridge = FABridge;
  
  function $() {
    var elements = new Array();
  
    for (var i = 0; i < arguments.length; i++) {
      var element = arguments[i];
      if (typeof element == 'string')
        element = document.getElementById(element);
  
      if (arguments.length == 1)
        return element;
  
      elements.push(element);
    }
  
    return elements;
  }
  
  var codes = {
          'get_slider': 'trace( flex.getSlider().getValue() )', 
          'set_check': '\n\
  var currentCheckValue = flex.getCheck().getSelected();\n\
  flex.getCheck().setSelected( ! currentCheckValue )\n\
          ', 
          'invoke_as': 'flex.testFunc( "Hello, Actionscript World! Love, Javascript..." );', 
          'button_event_handler': '\n\
  var callback = function() {\n\
          alert("Hello, Javascript! Love, Actionscript...");\n\
  }\n\
  flex.getButton().addEventListener("click", callback);\n\
          ', 
          'slider_event_handler': '\n\
  var callback = function(event) {\n\
          trace(event.getValue());\n\
  }\n\
  flex.getSlider().addEventListener("change", callback);\n\
          ', 
          'create_datagrid': '\n\
  var grid = bridge.flex.create("mx.controls.DataGrid");\n\
  var col1 = bridge.flex.create("mx.controls.dataGridClasses.DataGridColumn");\n\
  col1.setDataField("apples");\n\
  var col2 = bridge.flex.create("mx.controls.dataGridClasses.DataGridColumn");\n\
  col2.setDataField("oranges");\n\
  grid.setColumns( [col1, col2] );\n\
  grid.setWidth(300);\n\
  grid.setDataProvider( [ { apples: 12, oranges: 32 }, { apples: 7, oranges: 47 }, { apples: 14, oranges:21 } ] );\n\
  flex.getPanel().addChild(grid);\n\
  grid.addEventListener("change", function(event) { trace("apples: " + event.getTarget().getSelectedItem().apples); } );\n\
          ', 
          'make_rect': '\n\
  var spr = bridge.flex.create("flash.display.Sprite");\n\
  trace(spr);\n\
  var g = spr.getGraphics();\n\
  g.beginFill(0xFF0000);\n\
  g.lineStyle(2,2);\n\
  g.drawRect(-100,-100,200,200);\n\
  g.endFill();\n\
  flex.addChild(spr);\n\
  spr.setX(300);\n\
  spr.setY(300);\n\
          ', 
          'make_chart': '\n\
  var chart = bridge.flex.create("mx.charts.ColumnChart");\n\
  \n\
  chart.setName("chart");\n\
  \n\
  var s1 = bridge.flex.create("mx.charts.series.ColumnSeries");\n\
  s1.setYField("apples");\n\
  \n\
  var s2 = bridge.flex.create("mx.charts.series.ColumnSeries");\n\
  s2.setYField("oranges");\n\
  \n\
  chart.setSeries( [s1, s2] );\n\
  chart.setWidth(300);\n\
  chart.setHeight(200);\n\
  \n\
  flex.getPanel().addChild(chart);\n\
          ', 
          'make_interpolate': '\n\
  // make sure to \'create a chart\' first\n\
  var chart = flex.getPanel().getChildByName("chart");\n\
  var series = chart.getSeries();\n\
  var effect = bridge.flex.create("mx.charts.effects.SeriesInterpolate");\n\
  effect.setMinimumElementDuration(300);\n\
  series[0].setStyle("hideDataEffect", null);\n\
  series[0].setStyle("showDataEffect", effect);\n\
  series[1].setStyle("hideDataEffect", null);\n\
  series[1].setStyle("showDataEffect", effect);\n\
  // now generate new data...\n\
          ', 
          'make_zoom': '\n\
  // make sure to \'create a chart\' first\n\
  var chart = flex.getPanel().getChildByName("chart");\n\
  var series = chart.getSeries();\n\
  var effect = bridge.flex.create("mx.charts.effects.SeriesZoom");\n\
  effect.setMinimumElementDuration(300);\n\
  series[0].setStyle("hideDataEffect",effect);\n\
  series[0].setStyle("showDataEffect",effect);\n\
  series[1].setStyle("hideDataEffect",effect);\n\
  series[1].setStyle("showDataEffect",effect);\n\
  // now generate new data...                        \n\
          ', 
          'make_data': '\n\
  var chart = flex.getPanel().getChildByName("chart");\n\
  \n\
  var dp = [];\n\
  for(var i=0; i < 30; i++) {\n\
          dp.push( {apples: Math.random()*100, oranges: Math.random()*100} );\n\
  }\n\
  chart.setDataProvider(dp);\n\
          ', 
          'make_spinner': '\n\
  var spr = bridge.flex.create("flash.display.Sprite");\n\
  trace(spr);\n\
  var g = spr.getGraphics();\n\
  g.beginFill(0xFF0000);\n\
  g.lineStyle(2,2);\n\
  g.drawRect(-100,-100,200,200);\n\
  g.endFill();\n\
  flex.addChild(spr);\n\
  spr.setX(300);\n\
  spr.setY(300);\n\
  \n\
  var speed = Math.random() * 13;\n\
  flex.getStage().addEventListener("enterFrame", function(e) {\n\
          spr.setRotation(spr.getRotation() + speed);\n\
  });\n\
          ' 
  };
  
  function updateCode(event)
  {
          var code;
          
          if(typeof(event) == "string") {
                  code = event;
          }
          else
          {
                  var elt = getEventTarget(event);
                  code = elt['id'];
          }
  
          if (typeof codes[code] != "undefined") {
                  newCode = codes[code];
          }
          $("expr").value = "var flex = bridge.flex.root();\n\n" + newCode;
  }
  
  function testEval() {
          var funcExpr = $("expr").value;
          eval(funcExpr);
  }
  
  function trace(msg) {
          $("output").value = msg.toString() + "\n" + $("output").value;        
  }
  
  function getEventTarget(e) {
          if (/Explorer/.test(navigator.appName))
                  return e.srcElement;
          else
                  return e.target;
  }
  
  function dumpit(e) {
          var out = "";
          for (var aProp in e)
                  out += ("obj[" + aProp + "] = " + e[aProp]) + "\n";
          trace(out);
  }
  


(C) A. Eliëns 2/9/2007

You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.