Flex has a rule of one public class per file, so you’re going to need to factor each class into into its own file.  Then make sure you declare the functions that don’t need an instance of the class static and refer to them as class.func()

 

Matt

 


From: [email protected] [mailto:[email protected]] On Behalf Of Greg Johnson
Sent: Tuesday, November 01, 2005 6:43 AM
To: [email protected]
Subject: [flexcoders] Flex 2:Package/Class problem

 

I am tryinig to create a class with functions that I use repeatedly
so I can just include them in different components/applications.  As
far as I can tell I have written it correctly, but when I use an
include, and they try calling one of the functions, it doesn't work.

Here is the package
package mrstd{
      // Imported Libraries
      import mx.managers.PopUpManager;
      import mx.containers.TitleWindow;
      import mx.controls.gridclasses.DataGridColumn;
      import mx.managers.DragManager;
      import mx.events.DragEvent;
      import mx.formatters.*
      import flash.util.Timer;

      // Standard Library Class
      public class stdlib {
            // Does what it says, used when a function has to be
called, but you don't actually want to do anything
            public function doNothing():Void {}           

            // Get Today's Date as a string
            public function getToday():String {
                  var today_date:Date = new Date();
                  var date_str:String = ((today_date.getMonth()
+1)+"/"+today_date.getDate()+"/"+today_date.getFullYear());
                  return date_str;
            }
      }
     
      // Mouse Related Functions
      public class mouseHandlers {
            // Handles drag and drop events.
            public function doDragDrop(event:DragEvent):Void {
                  private var items:Array =
event.dragSource.dataForFormat("items");
                  private var dest:Object = event.currentTarget;
                  private var dropLoc:int = dest.getDropLocation
();
                  dest.hideDropFeedback(event);
                  items.reverse();
                  var l:int = items.length;
                  for(var i:int = 0; i < l; i++) {
                        dest.dataProvider.addItemAt(items[i],
dropLoc);
                  }
                  event.preventDefault();
            }           

            // Variables used for detectDoubleClick function
            private var lastClick:int = 0;
            private var lastObject:Object = new Object();;
            private var lastIndex:int = 0;
            private var maxTicks:int = 300;

            // Detect if a double click was made and if so, call
a function
            public function detectDoubleClick(event:Object,
functionToCall:Function, ... args):Void {
                  var currentClick:int;
                  var currentObject:Object;
                  var currentIndex:int;
                  var clickDif:int;
                  currentClick = getTimer();
                  currentObject = event.target;
                  currentIndex = event.index;
                  clickDif = currentClick - lastClick;     
                  if( clickDif <= maxTicks && currentObject ==
lastObject && currentIndex == lastIndex ) {
                        lastClick = currentClick;
                        lastObject = currentObject;
                        lastIndex = currentIndex;
                        if (args[0] == null) {
                              functionToCall();
                        } else {
                              functionToCall(args);
                        }
                  }
                  lastClick = currentClick;
                  lastObject = currentObject;
                  lastIndex = currentIndex;
            }
      }
     
      // Standard Formaters
      public class formaters {
            private var StdMoneyFormat:CurrencyFormatter = new
CurrencyFormatter();
            private var StdDateFormat:DateFormatter = new
DateFormatter();
            StdMoneyFormat.precision=2;
            // Formats a dataGrid cell as money
            public function formatMoney(dpItem:Object,
dgColumn:DataGridColumn):String {
                  return StdMoneyFormat.format(dpItem
[dgColumn.columnName]);
            }

            // Formats a dataGrid cell as a date           
            public function formatDate(dpItem:Object,
dgColumn:DataGridColumn):String {
                  return StdDateFormat.format(dpItem
[dgColumn.columnName]);
            }

            // Formats a dataGrid cell as a string that is x
characters long followed by an elipse
            public function shortString(dpItem:Object,
dgColumn:DataGridColumn, x:Number):String {
                  var tmpString:String;
                  tmpString = dpItem[dgColumn.columnName];
                  if (tmpString.length > x) {
                        tmpString = tmpString.substr(0,x);
                        tmpString = tmpString.concat('...');
                  }
                  return tmpString;
            }
      }

      // General Error Window Handlers     
      public class errHandlers {
            // CFC Error Handler Function
            public function cfcerr(cfcName:String,
functionName:String, faultCode:String, faultString:String,
description:String, details:String):Void {
                  var cfcErrPopUp:cfcError = cfcError
(PopUpManager.createPopUp(this, cfcError, true));
                  cfcErrPopUp.cfcName.text = cfcName;
                  cfcErrPopUp.functionName.text = functionName;
                  cfcErrPopUp.faultCode.text = faultCode;
                  cfcErrPopUp.faultString.htmlText =
faultString;
                  cfcErrPopUp.description.htmlText =
description;
                  cfcErrPopUp.detail.htmlText = details;
            }

            // Error Handler Function
            public function err(message:String,
source:String):Void {
                  var errpop:stdErr = stdErr
(PopUpManager.createPopUp(this, stdErr, true));
                  errpop.source.text = source;
                  errpop.message.text = message;
            }
      }
}

In the .as file I put

import mrstd.errHandlers.err;

and then down in the script I make a call to the err function

err("sometext","sometitle");

But I get an error at that line saying "Access of undefined property
err"







--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com




YAHOO! GROUPS LINKS




Reply via email to