Flex :: Way To "listen" On A Setter
Mar 30, 2011I want a custom function called after the setter call.
An ObjectProxy on variables with PROPERTY_CHANGE listener is the only way ?
I want a custom function called after the setter call.
An ObjectProxy on variables with PROPERTY_CHANGE listener is the only way ?
In Flex, you can add functions to the prototype of a Class; but how do you add a setter? For example, with A some (non-dynamic) class, you can do this:
var o:Object = new A();
A.prototype.myFunction = function():void{trace("foo");}
o.foo();
And that will call the foo function. But how could you add a setter, so that setting the property calls the setter (just like it would if you declared the setter in the "normal" way on the A class). So what I want is something like this:
// doesn't work!
A.prototype["set myProperty"] = mySetter;
o.myProperty = "test"; // should call mySetter
PS: Manipulating the prototype is an unusual thing to do in Flex, and not something I'd recommend in general. But for the sake of this question, just assume that there is a reason to dynamically add a setter.
I've created an AS class to use as a data model, shown here:
package
{
import mx.controls.Alert;
[code].....
I can see that when I set htmlText in a textarea control, the text property contains the html free version of the text. So there is a parser somewhere that is ripping of html from the content, which would be very usefull for my purposes.
However, based on the flex source code, the setting of html is done in UITextField.as, which is the type of the textfield member of TextArea. The line that does the work is:
super.htmlText = value;
in function override public function set htmlText(value:String):void Trying to follow the class hieararchy, I end up in FlexTextField class, which extends flash player's textfield class. It appears the functionality I am after is in flash player. So is there any way of accessing this html cleaning function?
Which is a much better practice in binding a value in Flex?
View 2 RepliesI am trying to override the text setter in the Label component but it behaves weirdly sometime super.text works and sometimes not! and the traces show that there's no error with my code.
here's my code:
import spark.components.Label;
public class LabelXX extends Label
{
private var _initialText:String;
[Code]....
I have a component where I expose the property 'questions' with the following code:
private var _questions:ArrayCollection;
private var questionsChanged:Boolean;
[Bindable("questionsChanged")]
[Code]....
In this component, I use commitProperties() to implement my logic.
I use Cairngorm and the 'questions' is in the model and hence it's defined as a source for data binding.
When the 'questions' ArrayCollection's size changes elsewhere in the application, it is not invoking the setter method in the component that is destination for the data binding.
I try to make have an EventListener in ItemRenderer but its not working. How to listen to an event inside an ItemRenderer?
----In MainHomeView.mxml----
<fx:Metadata>
[Event(name="myEvent", type="flash.events.Event")]
[Code].....
When I try to access the uncaughtErrorEvents dispatcher when loaded directly, everything works well. But when I try the same code when loaded by another swf I get a reference error.
protected function onAddedToStage(e:Event):void {
trace("Flash version: " + Capabilities.version);
try {
[Code]....
EDIT: Also have tried this with stage.loaderInfo, instead of just loaderInfo.
In Flex, is it possible to listen to all event types of an object that's an IEventDispatcher? addEventListener's first parameter is the type, which is a string. In many cases the documentation is not clear what event type it fires. I'd like to attach a generic listener to inspect the events.
View 2 RepliesI'm trying to detect when pop ups are visible (including tool tips if possible). The reason is that I need to hide or freeze (capture a snapshot) the Stage* components (StageWebView, StageVideo, StageText etc) when pop ups appear.
View 1 RepliesI have an Object in actionscript which has a few dozens of properties each of which is defined to be bindable and has its own change event. I would like to listen to any changes made to this object without having to add a listener to all of its properties. Is there a way in actionscript using which I can listen to any change in the values of an Object ?
View 3 RepliesI'm using an accordion container that has it's creation policy set to auto. One of the accordion's children is a spark border container that has a data grid within it. Currently, I'm using the data grid's creationComplete property to call a function; similarly, I'm using the dragComplete property to call another function.
How can I add listeners for events (creationComplete & dragComplete) via actionscript? The obvious problem is that the accordion does not create all its children on creation (nor do I want it to), so I can't simply use something like: datagrid.addEventListener(...)
I'm having the following problem: I've implemented a custom headRenderer for my DataGridColumn. The idea is to have a dropdown menu when clicked on the column header. The problem is I don't know how to add a listener or pass a variable to the renderer since the renderer class is instantiated by the ClassFactory.
The renderer class:
<?xml version="1.0"?>
<!-- itemRenderersdataGridmyComponentsRendererDGHeader.mxml -->
<mx:HBox xmlns:mx="library://ns.adobe.com/flex/mx"
[Code].....
Is there a way that a flex based application (in the browser or AIR) can listen to windows events (or any other OS) when it is not in focus?Lets say that my AIR application is minimized and I want her to be notified when ever new data was copied to the clipboard?
View 1 RepliesThere is event in spark Button - buttonDown. But how to determine the button up event?
View 2 RepliesIs this the most efficient way to listen to mouse events on the background of a group?
<s:Group width="200" height="100" rollOver="group1_rollOverHandler(event)" rollOut="group1_rollOutHandler(event)">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor alpha="0"/>
</s:fill>
</s:Rect>
</s:Group>
seems pretty minimal, but alpha = 0 is not the most efficient thing out there.
I am writing a flex application and I have two Spark TextAreas. I want to create an EventListener so that when the user clicks on a text area, the text inside the TextArea is cleared:
this.addEventListener(FocusEvent.FOCUS_IN, onFocusIn);
private function onFocusIn(ev:FocusEvent):void {
if (this._showsCaption) {
[Code]....
Currently I can implement this with a Spark TextInput, but when I click on the TextArea, the focusIn event never fires and the onFocusIn() handler is never called.
We are in the middle to evaluate the technology choice to re-design an operator console application. The operator console as a hosted contact center has the abilities to queue the inactive calls, and hold, answer, transfer the active calls.
The legacy operator console used Java Swing. We want to use the latest RIA technology (Flex/Silverlight) to retire the legacy one. But the question is Flex/Silverlight can implement the functions like hold, transfer the calls? Based on my experiences, Flex can listen Java socket to receive XML data? Does it work well to receive voice data?
If I plan to implement 100 objects on stage to be listen to mouse and keyboard input, is using "function" call responsive enough? How good does eventlistner work?
View 2 RepliesI'm having trouble updating a property value of a custom class (SubLoader) using a getter and setter. Inside the if() statement of the main fla you can see my attempt to set the percent value. Running a trace() method before the if() statement always outputs '0' for some reason. Tracing after the if() statment outputs an actual value. I can't figure out why the percent property always traces as '0' before the if statement even though I am updating it with each progress event.
[Code]...
I'm trying access my Document class (Manager) from within a movieclip in my fla, to set one variable within Manager. Manager is within the folder "code", and just like any class it's simple enough to write "var mng:code.Manager;", except I'm not sure how to define Manager:
"var mng:code.Manager = new Manager();" gives "Error #2136 .swf contains invalid data", for what seems to be the general redundancy of initiating the Document class again from the fla.So, how do I reference the Manager, so that I can simply write "mng.setVar = whatever;"?
super.zValue(n) should be super.zValue = n ........ wowy Nothing to see here folks, just keep moving on I'm having some difficulties in working with the as3 way of overriding methods.. specifically setters. I'm a recent convert from working with as2 for a few years, so some of these quirks are beyond me right now.Here are my two classes:class tempBase in package core
Code:
package core
{
import flash.display.MovieClip;
public class tempBase extends MovieClip
[code]....
I do not have any errors for the override of baseFunction, but on compile I get the error 1061: Call to a possibly undefined method zValue through a reference with static type core:tempBase.In as2, this would have been perfectly acceptable (even without the override function), and was incredibly useful in creating my class structures.
Anyone know a workaround to make static getter/setters?
View 2 RepliesI seem to have run into a situation where when I push a value to an array held within a singleton via a getter/setter , Flash seem so access the getter over the setter method. Within my command/controller (I am using RobotLegs)
override public function execute():void {
// various line of code here
//Place screenshot image into an array from model for later reference.
model.unitScreenshots.push(screenShot); // screenshot is just a Bitmap object
}
The getter and setter within my model e.g. robot legs singleton
public function get unitScreenshots():Array {
return _unitScreenshots;
} public function set unitScreenshots(value:Array):void {
_unitScreenshots = value;
}
When I set a break point on both the getter and setter, only the getter method is being called, why? I would think that a push value on the array would trigger the setter, not the getter.
I have a class which extends the Sprite object in as3. I need to be able to override the transform.matrix setter in this class but haven't been successful in doing so.
I've tried many things, along with creating my own separate class which extends the Transform class and then overrides its set matrix function, and set my transform = new CustomTransform(). Sadly this didn't work.
In code this is what i tried:
public class MyClass extends Sprite
{
public function MyClass()
{
[Code]....
I'm trying to create a property that can be set by extending classed and read publicly.I couldn't think of a good naming convention for a protected property with a public getter, so I tried to do this:
public function get name():String{ return _name; }
protected function set name(string:String):void
{[code]......
However I get the error (when trying to set name in an extending class): 1178: Attempted access of inaccessible property name through a
reference with static type testing:TestComponent.1059: Property is read-only.
If I change the setter to public, it works fine.
I recently completed a tic-tac-toe game in AS3, using some simple function-based code I had written in C many years ago.Now I'm on a quest to do it the "right way" using OOP techniques and best practices.Everything is now divided into neat little packages, it looks pretty, and the last part of my journey is to get all the little buggers to communicate with each other.I want to move the code which holds the game state from my main to it's own class in com.okaygraphics.model.GameState.The problem is nearly every other package gets and sets these game state properties.I'm trying to figure out the simplest way to encapsulate this stuff, while still allowing my other classes to access it.
1) Do I need a constructor? I mean, my program will never have more than one GameState. If I should call my getters/setters as instance methods, how do I get each other class to reference the SAME instance from their respective packages?
2) Do I even need getters and setters? Perhaps the class could just have 3 public properties? If so, how would I acheive the proper scope with regard to my other classes?
3) Should I assign everything to the class itself using the static keyword? If so, how would I implement and use those static methods?
4) Is this a mistake? Did I totally just program myself into a corner?
i dont get the advantages of using getter and setter instead of setting the var public.
View 7 RepliesI have two functions one that sets and one that gets a number. The set one works, but the get one doesn't. I have it trace the set it returns the correct number, but when I set the getY function, it doesn't give me anything at all. When i took the number out of the trace it just gave me back only text. What am I doing wrong here?
ActionScript Code:
public function setY(y):void {
y = y;
[code].....