text:
AS3 101: Events – Basix
For this chapter of AS3 101, we will be diving into the mechanics of the Flash event system. If you've been following along so far, you'll have seen events in use, dating all the way back to the first episode of the series. The editor and I felt that it was time to write up something to be formally included in the curriculum, so if you've ever seen those lines of code about adding event listeners or dispatching events, and not quite caught on, then this is the tutorial for you.
There already exists an Activetuts+ tutorial on the basics of Events, so the focus of this tutorial will be on dispatching events from your own classes, including creating custom event types and objects.
To be successful with this tutorial, you should feel comfortable with writing and using your own classes in ActionScript 3, as well as feeling secure with using the existing events provided by Flash, such MouseEvent.CLICK
or Event.ENTER_FRAME
. We will be focusing primarily on dispatching custom events from custom classes.
We'll spend a lot of time on the theory for this tutorial, but in the end we'll build a simple slider control that dispatches its own events:
Step 1: Why Use Event Dispatching?
This example is actually a rather simple example of why you'd want to dispatch your own events. When you write your own classes, you are ideally keeping them in their own black boxes and encapsulated. But you still need to have the various objects interoperate in order to create a useful program.
The event model provided by ActionScript 3 is a rather good and convenient way to facilitate communication between your classes, while maintaining a separation of responsibilities in your classes. So if we write our own custom class, such as the ActiveSlider
class showcases above, we have a need to enable other objects to be aware of when the slider changes its value. If the slider can dispatch its own change event, then other objects that need to know that information can easily subscribe and be notified.
Personally, I find the need to dispatch my own events in my classes so common that my class template sets up each new class with the boilerplate it needs to be able to do so. As you learn to keep objects discrete, you'll turn to event dispatching as the most common technique to do so.
Step 2: How to Dispatch Your Own Events
I have good news: dispatching your own events is actually very simple. It is one of the core tenets of ActionScript 3, built in to the Flash Player, and as such there is only one thing you need to do in order to gain the ability to dispatch events. This one thing is:
Extend EventDispatcher
That's it: when writing your class, use the line:
public class MyClass extends EventDispatcher {
Of course, you need to import EventDispatcher
, which is in the flash.events
package. You will most likely need other classes in the package, so it might be most convenient to simply import the package with a wildcard.
import flash.events.*;
Step 3: Dispatch
Now you're set up to dispatch an event. All you need to do now is call a method provided by EventDispatcher
named dispatchEvent
. Easy to grasp, no?
When you call dispatchEvent
, you must provide at least one argument, an Event
object. All built-in Event
objects are in the flash.events
package, so here's where that wildcard import comes in handy. Each type of Event
object will have its own requirements, but most often you simply need to pass it just one argument, as well. This argument is the event type, which is a String
that names the event, like "click"
or "complete"
. These are more commonly written as MouseEvent.CLICK
or Event.COMPLETE
, but the end result is the same; it's an identifier that separates one type of event from another, and allows one Event
object to manage multiple event types.
So, putting it all together, if you wanted to dispatch a "complete"
event, you could do so like this:
dispatchEvent(new Event(Event.COMPLETE));
Just drop that line (or one like it) in whichever method it's appropriate in your class. Your class will then utilize its inherited event dispatching system and any listeners will be notified for you. Speaking of listeners, let's take a brief look at those, as well.
Step 4: Listen
Any other object in your application can listen for your custom events now. More good news: this is no different than registering for events for the built-in classes. In the previous step, we set up our hypothetical class to dispatch a COMPLETE
event. To listen for that event, we could write this line somewhere else in our program:
var myObject:MyClass = new MyClass(); myObject.addEventListener(Event.COMPLETE, myCompleteHandler); function myCompleteHandler(e:Event):void { trace("My object completes me."); }
And that's it. This should look familiar to anyone who has hooked up a COMPLETE
listener to a Loader
, for instance, so I won't dwell any further on this.
Step 5: Where to Dispatch
Where you actually place the dispatchEvent
line of code requires some consideration. Typically, it should be the last line of code of the method in which it is written. This is so that any other code that also runs in that method can set properties or otherwise update the internal state of the object. By dispatching after this internal update is complete, the object is in a "clean" state at the time of the dispatch.
Consider, for example, our working example. Let's say the COMPLETE
event is all about the processing of some data; a bunch of data so large that it will take several seconds to completely process, so the object's purpose is to handle the processing asynchronously so as not to block the UI. And we're dispatching the COMPLETE
event as a way of saying that the data has been processed.
Now suppose that the main method in question looks something like this:
private function processDataChunk():void { _data += someDataProcess(); if (done()) { closeData(); } }
OK, not very realistic, but it illustrates the point. We keep building up the internal data until some other internal logic determines we're done, at which point we then write out some final bits of data to close the operation.
Now, let's add the dispatchEvent
private function processDataChunk():void { _data += someDataProcess(); if (done()) { dispatchEvent(new Event(Event.COMPLETE)); closeData(); } }
What's the issue with this approach? Any code that executes within listeners for the COMPLETE
event will run before the closeData
method is called. Therefore, the state of the dispatcher changes more than once within the span of the processDataChunk
method, and is not "stable" until after the closeData
call. Yet, we tell all of our listeners that we're complete before that call. This could lead to some hard-to-track-down bugs where one object claims to be COMPLETE
but really isn't. The obvious solution is to switch some lines around:
private function processDataChunk():void { _data += someDataProcess(); if (done()) { closeData(); dispatchEvent(new Event(Event.COMPLETE)); } }
Step 6: Custom Events
You're all set up to dispatch your own events. Now, what should you dispatch? There are a few options to consider:
- Simply reuse an event object and event type already provided by the Flash Player
- Reusing an existing event object, but provide a custom event type
- Re-Dispatch an existing event
- Create a custom event object
- Push vs. pull
This first option we've already seen in our previous examples. We have a need to dispatch an event related to the completion of some process, and as it happens Flash provides an event type (COMPLETE
) associated with an event object (Event
) that fits our criteria. We have no need to provide additional data with the event. Dispatching an Event.COMPLETE
event is all we need.
We'll explore these other options in the forthcoming steps.
Step 7: Custom Event Types
As hinted at back in the "Dispatch" step, event types are simply String
identifiers. They can technically be any String
you like. It's usually sufficient to make it a single word (like "complete" or "click") or very short phrase (like "ioError" or "keyFocusChange"); it only has to be unique within a given event dispatcher's realm of available events.
In addition, Event
objects (including subclasses, like MouseEvent
or ProgressEvent
) don't really care what event type they are given when instantiated. An EventDispatcher
will gladly dispatch events of any type identifier and of any class (as long as it's the Event
class or a subclass).
The upshot of this is that you can make up your own event type String
, dispatch it, and set up listeners with it, and everything will be just fine. This is helpful when you want to dispatch an event but can't necessarily find a good representation of the nature of the event in the built-in classes.
As an example, you might have a class that acts as a coordinator for several things at once: load some XML, load some images based on the XML data, and create a layout based on the loaded images' sizes, ready for an initial animation, at which point you'd like to dispatch an event. While the COMPLETE
event might be suitable, you may feel that a "ready" event more appropriately encapsulates the meaning.
This is as simple as deciding on the String
to use, and then using it. Use it both when adding listeners, and when dispatching the event. If the String
matches, the event will get to where it needs to go. For example, this is a partial listing of a hypothetical class:
public class MyClass extends EventDispatcher { // ... A bunch of other stuff not shown. private function determineReadiness():void { if (everythingIsReady) { dispatchEvent(new Event("ready")); } } }
And code from elsewhere in the same program:
var myObject:MyClass = new MyClass(); myObject.addEventListener("ready", onObjectReady); function onObjectReady(e:Event):void { // Do stuff now that it's ready. }
And that would work.
However, it's worth mentioning while we're here that typing in matching String
s all over the place is not a good practice. The possibility for error is high, and the event system won't tell you that you've typed "raedy"
instead of "ready"
. The fact that the event system is flexible and simple to use – just pass it any old String
for the event type – is also something of a weakness. Your dispatcher will gladly accept a listener for anything, even a "raedy"
event. It doesn't really reconcile what event types are registered against what event types are actually dispatched.
To help prevent this, the standard approach is to simply put the String
you want to use in a static constant somewhere, and then never use that literal String
again. Only use the constant. Of course, the possibility of typos is just a great as before, but if you're using a READY
constant and not the "ready"
literal String
, a mistype will trigger a compiler warning. You'll be able to correct your error quickly and easily. A mistype with the literal String
s produces no compiler error, nor does it produce a run-time error. The only thing that happens is that the SWF does not seem to work properly, because the event listener doesn't fire.
With this in mind, it's most common to store these constants on the related Event
class. We'll get to custom Event
classes in just a few steps. But in the situation outlined in this step (i.e., we're reusing an Event
class but not an event type), I find it more convenient to simply store that constant on the dispatcher class. So we might choose to do this:
public class MyClass extends EventDispatcher { public static const READY:String = "ready"; // etc. private function determineReadiness():void { if (everythingIsReady) { dispatchEvent(new Event(READY)); } } }
var myObject:MyClass = new MyClass(); myObject.addEventListener(READY, onObjectReady); function onObjectReady(e:Event):void { // Do stuff now that it's ready. }
This gives us the safety of storing event types in constants, while not forcing the inconvenience of creating a whole Event
class that we don't need. I must stress that this is a stylistic choice, and you may feel free to use this technique or not. I felt it warranted explanation, so that you could make your own informed decision. In either regard, you should definitely store your custom event type String
s in static constants. Where those static constants are defined is up to you.
Step 8: Re-Dispatching Events
There are several times when one class (let's call it ClassX
) owns a property that is typed as another class (we'll call that one ClassY
), while itself being owned by a third class (how about ClassZ
?). ClassX
is listening for an event from ClassY
, but not only do we want to have ClassX
respond to the event, we also want to consider that ClassX
should dispatch a similar (or even the same) event so that ClassZ
can also take further action.
As a more concrete example, we have a class (this will be "ClassX
") that is a sort of data manager. It loads an XML document, parses it, and stores data from the XML in its own properties. So it has an URLLoader
object (this would be "ClassY
"), and listens for the Event.COMPLETE
event for when the XML document is loaded.
Then we have a main document class that owns the data manager (the document class is "ClassZ
"). It's coordinating the data loading with other UI elements, so it wants to know when the data is loaded and ready, so it can proceed to create and layout UI elements based on the data.
public class DataManager extends EventDispatcher { private var _xmlLoader:URLLoader; public function DataManager() { _xmlLoader = new URLLoader(new URLRequest("some.xml")); _xmlLoader.addEventListener(Event.COMPLETE, onLoadComplete); } // ... A bunch of other stuff private function onLoadComplete(e:Event):void { // ... XML parsing // With the XML parsed, we'd like to dispatch another event to signal being done. } }
We could do this:
dispatchEvent(new Event(Event.COMPLETE));
But we could also do this:
Here we simply re-dispatch the existing event. Not only do we reuse the event type and the Event
class, but we're actually reusing the entire Event
object as it was passed in to our own listener.
It's not rocket science, but it is a handy little technique that is surprisingly not so obvious.
"But wait," you must be thinking, "if we redispatched an event that originated from the URLLoader
object, wouldn't the target
of the event still be _xmlLoader
when it gets back out to the document class?" And you would have a very good and thoughtful point, and I would be proud of you for thinking so studiously, but you would be wrong.
A rather magical thing happens when redispatching events. The target
property gets set to the current dispatcher. You can find a working example of the code in this step in the download package, entitled redispatch.
Actually, it's not all that magical. When calling dispatchEvent
, if the Event
object that is passed in already has a target
set, then the clone
method is called on the Event
, creating an identical but discreet copy of the original Event
, except for the value contained in target
Step 9: Custom Event Objects
Everything mentioned so far is something you will want to know. But there will come a point when the best thing to do is to dispatch your own custom event. Not just a custom event type, but a whole custom Event
The process for doing this is straightforward, you just need to follow a few steps. We'll discuss these in due course. Note that quite a bit of this is boilerplate code, and you could easily create a template for an Event
subclass and change just a few key pieces and be off and running. The general steps, in shortened-as-if-you-knew-what-I-was-talking-about form:
- Subclass
- Call
- Store event types in public static constants
- Declare private properties to hold custom data
- Create public getters to provide read-only access to the custom info
- (Optional) Override the
method - (Optional) Override the
To explain these process more deeply, we'll get a start on our slider project and create the SliderEvent
we will need for that. So we need to start our project before we can write some code, so a quick diversion in the next step, then we'll start writing a custom Event
Step 10: Create the Project Structure
We'll keep things pretty simple for this one, but we'll nonetheless create packages for our classes.
Start by creating a folder for the entire project. Mine will be called slider.
Inside of this, create a com folder, and inside of that, an activetuts folder.
Now create two folders inside of activetuts: events and ui. Your final folder structure should look something like this:
- slider
- com
- activetuts
- events
- slider
- activetuts
- com
Now back to our Event
Step 11: Subclass Event
First, create a new text file in the slider/com/activetuts/events folder, and call it SliderEvent.as. We'll pop in the boilerplate for any class first:
package com.activetuts.events { public class SliderEvent { public function SliderEvent() { } } }
There should be nothing surprising here, and if you have ActionScript templates for your text editor, you shouldn't even have to type that much in.
Now, we'll modify this so that it extends Event
package com.activetuts.events { import flash.events.Event; public class SliderEvent extends Event { public function SliderEvent() { } } }
As you can see, we simply import the Event
class, add extends Event
to the class definition.
Step 12: Call super
Our superclass can handle a lot for us, which is great, but we do need to make sure we initialize the superclass properly when we initialize our subclass. We need to set up the constructor with arguments matching those found on Event
's constructor, and pass those along with a call to super
package com.activetuts.events { import flash.events.Event; public class SliderEvent extends Event { public function SliderEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=true) { super(type, bubbles, cancelable); } } }
This is, so far, basic subclassing techniques. In fact, depending on your editor's prowess with templates, you may be able to specify a super class when you create the file and have all of this done for you. Flash Builder, for example, is able to do this.
Step 13: Store Event Types in Public Static Constants
Presumably, there will be one or more event types associated with this event class. Just like the COMPLETE
event is associated with the Event
class, and the CLICK
even with the MouseEvent
class, our custom event class will likely have custom event types.
This is as simple as writing a line like the following for every event type you would like to add:
public static const EVENT_TYPE:String = "eventType";
Let's do that now for the SliderEvent
package com.activetuts.events { import flash.events.Event; public class SliderEvent extends Event { public static const CHANGE:String = "sliderChange"; public function SliderEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=true) { super(type, bubbles, cancelable); } } }
We could theoretically use our class now. We can use the SliderEvent
in dispatchEvent
, and listen for and create events with the SliderEvent.CHANGE
event type.
But we won't stop there. There is more to consider. But before we do more code-writing, we need to take another detour into theory.
Step 14: Push vs. Pull
When an event is dispatched, sometimes it's enough to simply know that the event has occurred. For example, most times that you are interested in Event.ENTER_FRAME
, Event.COMPLETE
, or TimeEvent.TIMER
events, you probably just want to know that the event happened. There are other times, though, when you probably want to know more. When listening to MouseEvent.CLICK
, you might be interested in whether the Shift key was held down, or the coordinates of the mouse at the time of the click. If you're listening to ProgressEvent.PROGRESS
, you will most likely want to know the actual progress of the load; that is, how many bytes have loaded and how many there are to load in total.
The difference between these two methodologies is sometimes known as "push" and "pull." Those terms refer to how the event listener gets data related to the event. If the data is "pushed" then there is data stored within the event object, and in order to get the data the listener merely need to use properties on the event object. If data is to be "pulled," though, generally the event object has very little information contained within – just the necessities: the type, the target, etc. This target, though, is indispensable, as it provides access to the event dispatcher to the event listener, allowing the listener to get the data it needs from the dispatcher.
In other words, you can either push a bunch of data to the listener inside the event object, or you can require the listener to pull the data out of the dispatcher as needed.
The pros and cons of each technique are somewhat balanced, in my opinion, and the path you choose for your event object depends on the situation at hand, and not a little bit on personal preference.
Exhibit A:
Pros | Cons | |
Push |
Pull |
This might be a good discussion for the comments; I'm sure many of you reading have passionate feelings about which methodology is better. Personally, I try to find the method that works best for the situation.
Having said that, it's worth noting that to this point our SliderEvent
class is rather "pull-ish." For the sake of illustration, and because it's not a terrible idea (though I did come up with several of those), we'll continue on with making this an event that pushes data along with it; namely the value of the slider when it was changed.
Step 15: Declare Private Properties to Hold Custom Data
To implement a push event, we need to have a place to store the data being pushed. We'll add a private property for that purpose.
You should still have SliderEvent
open (if not… what are you waiting for?). Add the highlighted line:
package com.activetuts.events { import flash.events.Event; public class SliderEvent extends Event { public static const CHANGE:String = "sliderChange"; private var _sliderValue:Number; public function SliderEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=true) { super(type, bubbles, cancelable); } } }
Next we'll modify the constructor so that we can accept a value parameter, and set the private property with that:
public function SliderEvent(type:String, sliderValue:Number, bubbles:Boolean=false, cancelable:Boolean=true) { _sliderValue = sliderValue; super(type, bubbles, cancelable); }
This way we can easily create the SliderEvent
and set up its push data in one line.
Why use private properties? In this case, we want to protect the data. In my opinion the data related to an event is immutable, so long as it's associated with the event. Being able to change the data of an event object is like editing a history textbook. To be fair, this is my opinion and the standard used by Adobe with their built-in classes is to use writable properties (technically they use private properties and public getters and setters, but the end result is the same).
Step 16: Create Public Getters for the Custom Data
So the next step would be to make sure we can access the data being pushed. A private property by itself is not useful to this purpose. Therefore, we need to write a public getter for the _sliderValue
property. We will choose to not write a setter, so that the property becomes read-only (as discussed in the last step).
Add this method to the class:
public function get sliderValue():Number { return _sliderValue; }
This adds a getter so we can access the sliderValue
in property-like fashion. I'm choosing not to add the matching setter. You can add one if you feel it's worthwhile.
Step 17: Override the clone
I mentioned the clone
method a little while ago. You probably won't call clone
much yourself, but it's not a bad idea to override the clone
method so that your custom event plays nicely with the event system.
Add this method to your class:
override public function clone():Event { return new SliderEvent(type, sliderValue, bubbles, cancelable); }
First, notice the signature of this method. We're using override
because this method is declared in Event
, and we're inheriting it. It also returns an object of type Event
. Make sure, when writing your clone
override, that you put the correct return type in. It's easy to forget and put the type of your class there, but that will cause an incompatible override error, because the return types need to match.
All we're really doing in the meat of the event is creating a new SliderEvent
and passing in the same values that we have stored in the current event object. This creates an identical but discreet copy: a clone.
This is an optional step, but it's a quick win and ensures that your custom event plays well with the rest of the event system.
Step 18: Override the toString
One last thing, and again this is optional. But it's also very useful as a debug tool, so it usually pays for itself within a few uses.
In case you haven't been told yet, the toString
method exists on all objects (it's declared and defined in Object
, the über-class from which all other classes inherit, whether you like it or not). It can be called explicitly, but the handy thing is that it get called automatically in a number of cases. For example, when you pass object to the trace
function, any object that is not already a String
will have toString
called on it to make sure it is formatted nicely for the Output panel. It even gets called when working with Object
s together with String
s, as with concatenation. For example, if you write this:
"The answer to life, the universe, and everything is " + 42;
ActionScript is smart enough to convert 42
into a String
representation of the Number
before concatenating the String
. Trying to add a String
and a Number
is bad news, but converting a Number
to a String
and then concatenating it with another String
is just fine.
So when you write your own classes, you can provide a toString
method, which takes no arguments and returns a String
, and return whatever String
you like.
In the case of Event
objects, Adobe helpfully provides a formatToString
method to help all Event
s look similar when traced. We'll use it in the method we're about to add to our class:
override public function toString():String { return formatToString("SliderValue", "type", "sliderValue"); }
First, note the method signature. Again, it's an override
so we have that keyword. It's public
, it takes no parameters, and returns a String
(which should be obvious).
Next, note the single line in the method body. We call formatToString
, which is defined in Event
, so it's easy to use. The first argument we pass to it is the String
name of the class. After that, the arguments are open-ended. You can pass in one, 15, or none. We're passing in two. No matter how many you pass in, they should all be Strings
, and they should match property names on your class. "type"
is defined by Event
, but "sliderValue"
is defined by our own class. Either way, what happens is that the name of the property is printed, followed by an equals sign, which is followed by the actual value of that property. In short, it will end up looking like this:
[language="text"] [SliderValue type="sliderChange" sliderValue=0.34146341463414637]
This is entirely non-functional but very useful. It can provide a quick glimpse into the event when things aren't working the way you think they should.
Step 19: Building the Slider
At this point, we've been through the key concept of this tutorial: writing a custom Event
class. But we really need to put it to the test. We'll spend the remainder of our time building the simple slider application that was previewed at the beginning of the tutorial.
We already have a project folder structure; we just need a few more files. We'll start with the FLA file.
Create a new Flash file (ActionScript 3.0, of course) and save it as ActiveSlider.fla in the root of your project folder. I'm going to assume that you don't need step-by-step details on how to put this simple FLA together, and instead I'll lay out the key elements. You can use the FLA file found in the start folder of the download package for reference, as well, or even just copy that FLA to your project folder and call this step done.
There are three main objects on the stage.
- The slider track. This is a long, narrow strip that indicates to where the slider can be moved. The slider moves "in" the track.
- Needs to be a Movie Clip
- For easiest math, should have artwork arranged so that the registration point is at the top left corner
- Name it
- Place in the upper center; it should take up most of the width of the stage and have space below it.
- The slide grip. This is a button-sized element that indicates the current position of the slider. It's the piece that moves along the track and responds to the mouse.
- Needs to be a Movie Clip.
- Again, for math, should have the registration point at the top left
- Name it
- Place it over the track, so that it is vertically centered with the track, and somewhere within the left and right ends of the track
- It should be stacked on top of the track, so that the grip obscures the track (put it on a layer higher)
- The output field. This is a text field that, for our own demonstration purposes, displays the current value of the slider.
- Needs to be a dynamic Text Field.
- Name it
- Fonts are inconsequential; set it to whatever you like and embed as necessary
- Place it in the lower portion of the stage, so that it doesn't conflict with the space required by the slider.
Other than hooking up the document class, which we'll write in two steps, the FLA is ready for business.
Step 20: The ActiveSlider
The main UI class with which we'll work is the ActiveSlider
class. This will extend EventDispatcher
, target the two Movie Clips on the stage, and set up mouse interactivity for slider behavior. Most exciting of all, it will dispatch a SliderEvent
Start by making a new class file called ActiveSlider.as in the com/activetuts/slider folder of your project. This class isn't too intense (at least, not for our purposes here. A slider class could get much more involved), and I'll just present the code in full and discuss as we go:
package com.activetuts.slider { import flash.display.*; import flash.events.*; import flash.geom.*;
Nothing exciting, just setting up the package and imports.
public class ActiveSlider extends EventDispatcher { private var _track:Sprite; private var _grip:Sprite; private var _grabOffset:Point;
We'll need these three properties. The first two keep track of the Sprite
s (or MovieClip
s) that make up the slider. The third is used while dragging the slider grip; it helps keep the grip's position offset from the mouse by an amount relative to where the grip was clicked in the first place.
public function ActiveSlider(track:Sprite, grip:Sprite) { _track = track; _grip = grip; if (_grip.parent != _track.parent) { throw new Error("The track and the grip Sprites are not in the same container.") } _grip.addEventListener(MouseEvent.MOUSE_DOWN, onDown); if (_grip.stage) { addStageListener(); } else { _grip.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } }
This is the constructor. It accepts two Sprite
arguments, which get passed on to the first two of those properties for storage. It then does a simple check to make sure the two Sprite
s are in the same coordinate space by checking that their parent
properties reference the same object. If they don't, then our math for placing the grip might be unreliable, so we throw an error as a way of alerting the developer. The rest of the constructor is devoted to adding two event listeners. The first is a MOUSE_DOWN
event and straight forward. But the second is trying to add a MOUSE_UP
event to the stage
, which might or might not exist depending on whether the grip
is on the display list or not. The next two methods might make this a little clearer:
private function onAddedToStage(e:Event):void { _grip.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addStageListener(); } private function addStageListener():void { _grip.stage.addEventListener(MouseEvent.MOUSE_UP, onUp); }
The onAddedToStage
method is an event listener for the ADDED_TO_STAGE
event, which was set up in the constructor, but only if the grip Sprite
did not already have a reference to the stage
. The addStageListener
method simply adds the MOUSE_UP
event listener to the stage
. So, if there is a stage
reference in the constructor, we call addStageListener
directly. If there is not a stage
reference, we set up the ADDED_TO_STAGE
event, and when the grip is added to the display list, and thus has a stage
reference, the onAddedToStage
method fires which then in turn calls addStageListener
. It also removes the ADDED_TO_STAGE
event listener, because we only need to do this once.
private function onDown(e:MouseEvent):void { _grabOffset = new Point(e.localX, e.localY); _grip.addEventListener(Event.ENTER_FRAME, onFrame); } private function onUp(e:MouseEvent):void { _grip.removeEventListener(Event.ENTER_FRAME, onFrame); }
Next we have our two mouse event listeners. In onDown
, the key line is to then add an ENTER_FRAME
event listener. In onUp
, we remove that listener. Also in onDown
, we make note of where on the grip the mouse click actually happened, and store that in _grabOffset
. This will play into our onFrame
method next.
private function onFrame(e:Event):void { _grip.x = _grip.parent.mouseX - _grabOffset.x; var gripBounds = _grip.getBounds(_grip.parent); var trackBounds = _track.getBounds(_grip.parent); if (gripBounds.x < trackBounds.x) { _grip.x = _track.x; } else if (gripBounds.right > trackBounds.right) { _grip.x = trackBounds.right - gripBounds.width } trace(this.value); }
This is the main meat of our slider logic. This method fires repeated on an ENTER_FRAME
event, but only when the mouse has been pressed down on the grip, and only for as long as the mouse remains pressed.
First, we set the grip's x
property to match the mouse position, only we need to offset it based on the original mouse position, so that it moves smoothly and doesn't jump so that its left edge is at the mouse.
The next two lines calculate the bounding rectangles of both the grip and track Sprite
s. We'll use these rectangles in the upcoming math, so we'll keep things tidier by pre-calculating the rectangles and storing them in variables.
Then there is the if
block. This just constrains our slider to within the track. It's a simple check to see if the x
of the grip, as calculated in the first line of the method, is lower than (to the left of) the x
of the track. If it is, it would be too far, so we need to move the grip to that minimum value. Similarly, we check to see if the grip's right edge is greater than (to the right of) the track's right edge, and if so we need to reel it back in to that maximum value.
Finally, we have a reliable grip position, and for now we just trace the current slider value, which is calculated in the final bit of code for the class:
private function get value():Number { return (_grip.x - _track.x) / (_track.width - _grip.width); } } }
This is a simple getter, although the math being used for the return value might be a little confusing. It determines the current grip position as a percentage of the range of motion of the grip. It would be more obvious if it were just this:
return _grip.x / _track.width;
…which is reasonable but doesn't take into account that the grip doesn't actually travel the entire width of the track. It goes all the way to the left edge, but only as far right as the right edge of the track minus the width of the grip. So this is more accurate:
return _grip.x / (_track.width - _grip.width);
This makes the width by which we divide the range of motion. However, there may still be a gotcha in that the track may be offset to the left or right from its container, meaning that the values we get aren't quite right. We need to neutralize that by subtracting the x
position of the track from the grip's x
, and we end up with this:
return (_grip.x - _track.x) / (_track.width - _grip.width);
For reference, here is the complete class, with my ramblings left out:
package com.activetuts.slider { import flash.display.*; import flash.events.*; import flash.geom.*; public class ActiveSlider extends EventDispatcher { private var _track:Sprite; private var _grip:Sprite; private var _grabOffset:Point; public function ActiveSlider(track:Sprite, grip:Sprite) { _track = track; _grip = grip; if (_grip.parent != _track.parent) { throw new Error("The track and the grip Sprites are not in the same container.") } _grip.addEventListener(MouseEvent.MOUSE_DOWN, onDown); if (_grip.stage) { addStageListener(); } else { _grip.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } } private function onAddedToStage(e:Event):void { _grip.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addStageListener(); } private function addStageListener():void { _grip.stage.addEventListener(MouseEvent.MOUSE_UP, onUp); } private function onDown(e:MouseEvent):void { _grabOffset = new Point(e.localX, e.localY); _grip.addEventListener(Event.ENTER_FRAME, onFrame); } private function onUp(e:MouseEvent):void { _grip.removeEventListener(Event.ENTER_FRAME, onFrame); } private function onFrame(e:Event):void { _grip.x = _grip.parent.mouseX - _grabOffset.x; var gripBounds = _grip.getBounds(_grip.parent); var trackBounds = _track.getBounds(_grip.parent); if (gripBounds.x < trackBounds.x) { _grip.x = _track.x; } else if (gripBounds.right > trackBounds.right) { _grip.x = trackBounds.right - _grip.width } trace(this.value); } private function get value():Number { return (_grip.x - _track.x) / ((_track.width - _grip.width) - _track.x); } } }
We have not added in our SliderEvent
class yet; we'll take a separate step to do that. But first, we need our document class so we can actually use the ActiveSlider
Step 21: The Document Class
We need one more file to make it work: our document class. Make a new class file named SliderDemo
in the project root folder. Add in the following code:
package { import flash.display.*; import flash.events.*; import com.activetuts.slider.ActiveSlider; public class SliderDemo extends Sprite { private var _slider:ActiveSlider; public function SliderDemo() { _slider = new ActiveSlider(track_mc, grip_mc); } } }
This is much simpler that our ActiveSlider
class. It really just sets up an ActiveSlider
into the property named _slider
Go back to the FLA file, and enter SliderDemo into the document class field, and you should be able to try this out. The slider should be able to move back and forth, and constrain itself to the width of the track.
Now for one last task. We need to dispatch, and listen for, a SliderEvent.CHANGE
event. We'll do that next.
Step 22: Dispatching the SliderEvent
Go back to the ActiveSlider class, and make a single-line change to the onFrame
private function onFrame(e:Event):void { _grip.x = _grip.parent.mouseX - _grabOffset.x; var gripBounds = _grip.getBounds(_grip.parent); var trackBounds = _track.getBounds(_grip.parent); if (gripBounds.x < trackBounds.x) { _grip.x = _track.x; } else if (gripBounds.right > trackBounds.right) { _grip.x = trackBounds.right - _grip.width } dispatchEvent(new SliderEvent(SliderEvent.CHANGE, this.value)); }
We've removed the trace and replaced it with a real, live event dispatch. For this to work, though, we need to import the SliderEvent
package com.activetuts.slider { import flash.display.*; import flash.events.*; import flash.geom.*; import com.activetuts.events.SliderEvent;
Step 23: Listening For the SliderEvent
Finally, go back to the SliderDemo class, and change it so it listens for and reacts to the SliderEvent
package { import flash.display.*; import flash.events.*; import com.activetuts.slider.ActiveSlider; import com.activetuts.events.SliderEvent; public class SliderDemo extends Sprite { private var _slider:ActiveSlider; public function SliderDemo() { _slider = new ActiveSlider(track_mc, grip_mc); _slider.addEventListener(SliderEvent.CHANGE, onSliderChange); } private function onSliderChange(e:SliderEvent):void { trace(e); output_tf.text = e.sliderValue.toString(); } } }
We're again importing the SliderEvent
class, and after creating the ActiveSlider
, adding a listener called onSliderChange
to the slider. That method is the biggest addition, but still is a regular event listener. It's much like any other event listener, only we're making sure to type the event argument as SliderEvent
, because that's what we're getting.
The first line of code is a bit superfluous, but I wanted to see what happens when you trace our SliderEvent
object. You'll see, when you run this, a typical-for-Flash formatting of the event object.
The second line does what we were after to begin with. It simply grabs the sliderValue
property, turns it into a String
, then sticks that String
into the TextField
on the stage, so we can see the slider value in the movie.
Step 24: Wrapping Up
When you start rolling your own custom events, you start working with ActionScript 3 the way it was meant to be used. Events help you decouple classes from each other, and a well structured event flow in your application can really make the difference between something that is easy to work with and something that is buggy and temperamental. With this (theoretically) final instalment of AS3 101, you should be well on your way to becoming a ninja.
Thanks for reading, and I'll see you back here on Activetuts+ before you know it!
View full post on Activetuts+


text:
Rules engine (2 messages)
- Posted by: raghu tss rao
- Posted on: May 14 2001 16:39 EDT
Has any of you tried any rules engines. What have your experences been.Threaded Messages (2)
- Rules engine by Marco S on April 30 2004 04:50 EDT
- RULES ENGINE by Leonie Norton on November 15 2004 21:36 EST
Rules engine[ Go to top ]
- Posted by: Marco S
- Posted on: April 30 2004 04:50 EDT
- in response to raghu tss rao
Try ruleCore, it can be downloaded from www.rulecore.com. It's free(GPL). It implements reaction rules (Event-Condition-Action) and is event-driven... -
RULES ENGINE[ Go to top ]
- Posted by: Leonie Norton
- Posted on: November 15 2004 21:36 EST
- in response to Marco S
Check out IDIOM Decision Server www.idiomsoftware.com. It has an easy to use platform, highly configurable and provides independently managaged business decisions. Very appealing visual aspect is a bonus - a real doddle to set up!

subset: commoncrawl


text:
Skip to Content
Home > Emergency Medicine > Emergency Trauma Center > Accredited Trauma Center
View Additional Section Content
According to the Pennsylvania Trauma Systems Foundation (PTSF), trauma centers "provide specialized medical services and resources to patients suffering from traumatic injuries. Appropriate treatment has been shown to reduce the likelihood of death or permanent disability to injured patients. Accredited trauma centers must be continuously prepared to treat the most serious life threatening and disabling injuries. Even though trauma centers are within hospitals, they are not intended to replace the traditional hospital and its emergency department for minor injuries."
A recent study of emergency care among Pennsylvania hospitals found that those with trauma centers produced better outcomes on weekends, protecting against the "weekend effect" — published in the Archives of Surgery, online March 21, 2011.
Abington Memorial Hospital (AMH), the only Level II Trauma Center in Montgomery County for the past 25 years, is ready every hour of every day to provide immediate, expert care for life-threatening and potentially life-altering serious injuries from a wide range of causes. Abington Memorial has made a significant investment and commitment to meet the rigorous standards required by the PTSF so that whenever a trauma patient is en route to AMH, our highly skilled and practiced team moves into action, and our state-of-the-art trauma facilities are ready to respond.
Every time a trauma alert is called, the hospital immediately mobilizes a huge amount of resources. These resources are ready at all times, and the response to a trauma alert by a dedicated, experienced team of physicians, nurses, and support departments is coordinated and practiced with protocols and standards in place to ensure consistency. This team is able to rapidly evaluate the patient and determine the best course of action. The community that depends on Abington Memorial Hospital can feel secure, knowing that the hospital maintains this level of readiness 24 hours a day, 7 days a week.
An accredited Trauma Center maintains a steadfast, coordinated system of care for the patient throughout his/her hospitalization. The ultimate goal is to promote an environment at Abington Memorial Hospital that will support the patient from the time of initial injury through definitive management in the acute care setting to discharge either to home, the rehabilitation setting or skilled nursing facility. The trauma team provides timely interventions based on standards in trauma care with resources and support services to enhance each patient's recovery. This can only be accomplished by a collaborative team approach to each patient and Abington Memorial Hospital's commitment to provide all the necessary resources.
Find a PhysicianSearch Our Directory
Schedule a Test
My AH Link
© 2015 Abington Health. All rights reserved. 1200 Old York Road, Abington, PA 19001 215-481-2000


text:
Telephone: 01603 454402
About Us
Hear Us
About the Music
About the Minstrels
Our Instruments
Our Clients
Our CDs
Contact Us
Contact Us Please get in touch if you have any further enquiries about us, our music and what we provide.
If you book Minstrels Gallery you will be getting a group of musicians who play over 40 different instruments and really know how to make early music entertaining.
Whatever your event we guarantee you something from the past that brings a great atmosphere to the present.
Contact Tony & Jane
Tel: 01603 454402
Mobile: 07786 057484
email: email@example.com
Address: 43 Muriel Road, Norwich, Norfolk, England, NR2 3NY


text:
Closing a Sale or Opening a Client?
Posted on Apr 20, 2010 in
By Dan Hughes CSO and Co-Founder of Broadlook Technologies "Closing the sale."Where do we get this phrase?Or how did "I am about to close a big sale", "When are you closing that deal?" or "Let's review the pipeline to see what sales are closing this month" enter into common vernacular of the sales organization? Probably [...]


text:
We're sorry, we need more information to run your search. Please enter a last name (adding more details will improve your results).
Find relevant facts on David Danielson by examining PeopleFinders.com. Our large database of public records allows us to easily find known relatives, prior addresses, aliases, and more. David Danielson can be found in Clarendon, PA. Their relatives include .
If this person isn't the right David Danielson you're hunting for, you can try other techniques to modify your people search. Find David with other information you have like a phone number, email address, etc. You can also run background checks and look up criminal records on PeopleFinders.com. Another option to help you find that person is to use the list of people above with the last name Danielson in Clarendon, PA. Using our extensive data search, we provide age, location, relatives, and other available details.
The search filter above can help you spot David Danielson faster. Including a middle name or age to your search can narrow down your results and may be the key to finding your person. We only use trustworthy public records data at PeopleFinders.com taken using our exclusive DataTsunami™ logic. We will generate whatever results we have in a few seconds for any David Danielson we have on file. Start your search today!


text:
31 posts found | |
Originally posted by itgrowls I was thinking the same.. I was hoping I could log in.. and watch some friends chars move around and watch what they do when they aren't logged in. |
Meh. Blade & Soul does it better. Sadly we won't be seeing it in the west for a while.
"For the Angel of Death spread his wings on the blast, |
Originally posted by doragon86 Blade&Soul is a completely different game, it's not a sandbox/hybrid MMO. |
Originally posted by Rimmersman Indeed it isn't, and I never said a such. Simply saying that they do wall walking better imo. "For the Angel of Death spread his wings on the blast, |
I am having such a huge argument over playing either a scholar or one of the wandering valley types. Either one will play Go amongst all the other things they can get into. I am arguing over if I am mean enough to kidnap an offline player character and sell them to the brothel though. |
Originally posted by doragon86Originally posted by Rimmersman Walking on water is minor compared to most features of the game, it's fun but you don't choose Age Of Wushu because you can walk on water. |
So.... all I keep hearing is "wall walking" and "running on water". Does this game do anything else or what? I wanna play a game because i hear "Deep Story" and "Open World" and "Great char builds", etc. So if all i have to look forward to is "Wall Climbing" and "Running on Water", then i guess this is not the game for me. Plus the combat is point and click. Yes point and click watch the first looks Macigman does at MMOBomb and other sites. I thought this game said "ACTION" combat? So i assume like RaiderZ and Guild Wars 2, etc. But alast mislead again. Oh and open world pvp. Just what i need, to be in the midst of an important quest and, "BAM"! Some dick kills me for no reason but just to sit and wait for other players to come around a corner. Fair? No. I personally don't like pvp. So ofcourse it's not fair for me lol. So to sum it up on this game.....I don't know. It would be worth it if the pvp player base were not dicks and only attack you if you ask for it. LOL. I guess combat can be dealt with like WoW and LOTRO, etc. But what about story? Everything else is covered except story. I just hope this is not one of thoes games that focuses on cosmetics instead of story and gameplay. Still i'll give it a shot and see what comes of it. |
Originally posted by Allacore69 If you want a story based driven game, then MMOs arent really that great. AoC was okay at best and SWTOR which was known for "story" was pretty lame too. I havent found an MMO that I was enthralled with the story. I take that back, LOTRO has some pretty cool Storyline quests. Best I have seen and it kep me playing to see the Story unfold in the game. This game isnt just about movement. Its about being involved with the community around you. Id have to say what appeals to me is "needing" others. You can be a jerk and PK for how long before you are given the cold shoulder? No food for you! To the end of the line! No weapons for you, you killed my friend. All the good people have to do is band together and put that person on the naughty list and not give them a thing. You dont have food in this game, you die. Better be a Chef and a Farmer if you are going to PK right? I think it's wonderful to lean on others and it will make the normal PKrs life a living hell in the end if they make too many people angry and dont have a group to back em up. I wouldnt say this game has anything ground breaking. Its just old school, socializing and playing with others in a cool game. Its sandboxish yet Theme like. It has crafting thats "neded" and Guilds can take over schools... Guilds can take over schools? Amazing. Love it! I think what people need to realize is that before games lined everything out for us, we used to creat fun inside of them. So much to do, its just up to you to discover it. I can make this game fun by interacting with other people and creating my own events: --Foot races --Mounted Races --Find X animal first --PvP Tournament (clan, school, server) --Guild vs Guild (find a clan willing to go head to head to see who is best) This world is up to your imagination and thats whats great about it. You dont have to JUST do whats lined out for you. |
Originally posted by Rimmersman Hmm? I wasn't really comparing other game features. The OP spoke of wall walking, and I merely pointed out another game that does it better. That's all. "For the Angel of Death spread his wings on the blast, |
depends which starting location You take at character creation You have 1 of 4 dramas, then each clan have own drama +gossip quests which are around 1k but only some of them give nice rewards small examples at hill/big tree/high pavilon You find item with coords that will start chain quests or chest with reward make npc to like You, by: training near him/her, dueling, giving gifts, crafting, then npc will talk with You, give some riddle, ask to go to certain npc, or what item is needed theres npc which like to steal eggs from birds nest, if You give eggs to her she will give You hairpin, You take hairpin to other npc as reward she give cords to kung fu master npc who will give You Light Foot skill |


text:
Green Dog Promotions, LLC
Live Marketing and Sales
for the Pet Industry
We go to the dogs ... so you don't have to!
Live Marketing Benefits
Event Tabloid Examples
Our Blog
Contact Us
Charity Event
Because Your Dog Is Worth It, Too - Komen Race for the Cure
Features: Consumer Tabloid, Game Sponsorship, Product Sampling, Product Information Distribution, Retailer Referral
Green Dog
This is an event that we have attended with various clients since its inception seven years ago. In 2010, we gave out over 5000 samples in addition to obtaining client sponsorship for all the dog-related games. The visibility is tremendous at such events, allowing our clients to be remembered as a pet product with a cause !
Green Dog Promotions, LLC 1017 Whitehall Road Newfield, NJ 08344 856-405-6192
Building Loyal Buyers and Loyal Retailers, One Dog at a Time.


text:
Sweet Omlette Lover crazy canadain mk buddie Jamie I LOVE YOU okey enough said lol girls you better keep your hands to your self so I wont kill you lol I love him Wonderful Funny
You can reach this milestone by accruing more than 50 reputation points in the last 7 days
You can reach this milestone by completing the quiz Who Should Be Your New Boss?
You can reach this milestone by completing the quiz What's Your Fixing Things Career?
You can reach this milestone by completing the quiz What's Your Knowledge Sharing Career?
You can reach this milestone by starting a group that is one of the top 100 most active groups.
You can reach this milestone by inviting at least 5 friends who join the site.
You can reach this milestone by being one of the first 1,000 members to gain a star.
You can reach this milestone by becoming a site moderator
You can reach this milestone by being one of the top 100 users on the Reputation Leaderboard.
JamJars: Friends
JamJars: Groups
- WoRLd FrIeNdS
- quiz fans
- CrAzY AnD RanDoM PeOpLe
- The Treehouse
- JuNk FoOd LoVeRs
- Bumpmaina
- topics
- music lovers 3
- How are you feeling today Let us know
- Were Following TestQ on Twitter
- Zodiac Signs
- Cool Art Fans
- Affinity
- Love to be random
- Lollipops
- Come Join In For Fun
- Friends of Michelle
- Bring back the make your own quiz
- Smile - Makes Life Beautiful
- Born in Summer
- Queen3
- I support Michelles Art
- AnImE GrOuP
- The Beach House
JamJars: Quiz Results
Career Personality Test taken about 6 years agoINFJ |
How Considerate Are You? taken about 6 years agoYou're Extremely Considerate |
Could You Be at Risk for PTSD? taken about 6 years agoYou probably don't have PTSD |
What Kind of Monkey Are You? taken about 6 years agoBaboon |
- Location:
- Los Angeles, CA
- Industry:
- Accounting
- Status:
- Seeking Employment
- Relationship Status:
- Single
JamJars: Activity
"Happy New Year Michelle. <3" |
"Yes I has MSN. email@example.com Is what you want. ;p" |
"Although, as I've learned, I'm not that good at the game. <;;" |
Professional Information
- Employer:
- None
- Position:
- None
- Hobbies:
- Taking Quizzes,
Comment Wall
Add JamJars as a friend to write on their Comment Wall.
I think she'd like it if you did :)
lol like her brother,but at least she'll think about it.
Account Removed
about 5 years ago
hi!!!!!!!!!hows life????????? :) reconnecting now.........
why cant she?
and did you try to talk to her about it then? maybe she's happy with it? -
owh,that kinda sucks... for her XD lol
lol yea you were right xD ,thanks hahaa xD, and that sucks,why did she move then if she dosent like it?
Ah okay.
^_^Night nighty night then. *waves and hugs*
Are fruit flies those big black bugs? O_O' Those big black flying bugs scare the heck out of me, they seem like they want to kill you. ;O
I think those are horseflies though. XP -
My scanner is big. O_X I walk around my house with my netbook, so yeah. A tablet attached is enough. XP Then it'd half to stay in my room. I'll probably end up doing a wireless connect with the sucky scanner/printer. Bleh.
My foot is being attacked. :O
lol lol lol xD dont be hard on yourself,i forced it out xD
and kitty left D: owwww!!!!!
I got a real bad one, won't even let me on the computer! >_< It restarts it when it finally turns on, which takes a really long time. XP I can't post arts online! T_T I drew a really neat picture too.... I'm getting way better. Wish I could so I could show you something.
Maybe I'll try to hook up my scanner to netbook. O_O
I do that a lot. Think about doing something, you want to do it, you kinda need to, but you don't. And then you think... "Why didn't I do this earlier?" or "too easy" later on. XD
did ur kitty poop on you? XD XD XD eewwwwww -
Sounds like your putting a lot into it! n_n
Hope you get lot's of people to come and rp with you when your done.
Just make sure you keep those god-moders away! XPI never told you.... my big computer got a trojan. D; Always my big computer, which I never download anything on gets it. I have anti-viral stuff too....
I think my netbook's anti-viral is better... *knocks on wood* -
I normally don't do downloads, so I'm going to suck. I know it. I'm good at earning money and items on sites like gaia, which tinierme is like, but way safer and better... but I don't know. Actual people make everything harder. Computers you figure out and can outsmart.
You're making a text-based rpg? :O Or an actual rpg?
I'm disappearing from a few other sites too! T_T I've been on tinierme too much, and now I'm going to become addicted to maginobi..spell fail. My friend wanted me to download it, so yup.
Fix them. I need to wear my glasses more... stuff is blurry without them. D:


text: NEW 4TH EDITION! This is the seventh of a seven book series (K-6th grade) providing instruction in italic handwriting. We recommend Book G for students in the sixth grade and beyond (although older students might prefer our more comprehensive book for adults "Write Now"). The final book in the series contains practice paragraphs acquainting the student with a brief history of the origins of our letters, from cave paintings to copperplate. Rich in meaningful instruction. Last few pages are reserved for experimentation with edged pens. Detailed illustrations. Type: Paperback () Category: > Home Schooling ISBN / UPC: 9780982776216/0982776217 Publish Date: 2/1/2011 Item No: 225696 Vendor: Allport Editions |


text:
Call us 7 days a week
Know exactly what you want?
Save time with this quick order form. If you know the catalog/part numbers for the items you wish to purchase, enter them into your cart here. You can also browse the site and add items to your cart from any product page.
Quick Order
Top Categories in Electrical & Bulbs
Fluorescent Bulbs
Incandescent Bulbs
See More
Fixture Parts & Accessories
Locking Devices
Straight Blade Devices
Electromechanical Timers
Electronic Timers
All Categories
Please select at least one item
Browse Flashlights & Portable Work Lights
The Designers Edge
Sub Category
Narrow Your Results
Our Price
1 Result
Compare up to 4 items
Goliath 100,000 Lumens 1000 Watt Industrial Metal Halide Power Light
Sold By: globalindustrial.com
Item #: WB534147
Not Yet Rated


text:
Laxmilatha, P and Laxminarayana, A (2004) Fine structure of the haemocytes of the Indian white shrimp Fenneropenaeus indicus (H. Milne Edwards, 1837). Crustaceana, 77 (7). pp. 835-848.
| PDF 2599Kb |
Three types of circulating haemocytes have been identified in the haemolymph of the Indian white shrimp, Fenneropenaeus indicus, by electron microscopy. The ultrastructure of an agranulocyte, a dense granulocyte, and a semi-dense granulocyte, are described. The possible presence of a fourth type of haemocyte, viz., the cyanocyte, is discussed. The ultrastructure of a special type of haemocyte found in the haemolymph of shrimps with a developing ovary is described.
Item Type: | Article |
Uncontrolled Keywords: | Fine structure; haemocytes; Indian white shrimp; Fenneropenaeus indicus |
Subjects: | Fish and Fisheries > Fish physiology |
Divisions: | CMFRI-Visakhapatnam |
ID Code: | 6157 |
Deposited By: | INVALID USER |
Deposited On: | 10 Nov 2010 11:04 |
Last Modified: | 10 Nov 2010 11:04 |
Repository Staff Only: item control page


text:
Reggaeton Mugs are an Idakoos specialtiy! Idakoos has many things to offer. Whether you want to get a Reggaeton Mug for a special occasion, give a Reggaeton Printed Mug as a present or need to represent with a funny Reggaeton Coffee Mugs during Holidays or Family and Friends get-togethers, Idakoos is sure to have the right Reggaeton Mug for you! Even if it turns out you can't find the right Reggaeton Coffee Mugs with the perfect design for your mother, father or children (or friends!); Idakoos offers all of its Reggaeton Mugs as Custom Reggaeton Mugs. Personalize any Reggaeton Mug the way you want to ensure the perfect gift.
Showing 1 - 24 of 65 Mug


text:
In this tutorial I will tell you how you can delete the cached file by yum utility. The yum utility downloads and saves the file in cache while installing a new package. If you want to spare some of the space on your system then you should delete the cache.
What is yum?
The Yellow dog Updater Modified or YUM for short is free software package management tool for linux. The YUM is open source software package, which is used in linux environment for installing, updating and uninstalling software packages.
It is very intelligent tool and it determines the dependency among the software packages. It automatically downloads and installs the packages in the dependency tree. It makes the management of software packages on linux system very easy.
Use of yum tool to clear cache
Following command is used to to delete the package data:
su -c 'yum clean headers'
If you wan to delete all the packages held in cache, you can use following command:
su -c 'yum clean packages'
This way you can free some of the space on your hard drive.
In most of the cases you just need to install the package on your linux system. After installing the package using yum tool you can delete the packages held in cache.
In this tutorial we learned how to you clean cache using yum tool.
Posted on: November 21, 2011 If you enjoyed this post then why not add us on Google+? Add us to your Circles
Share this Tutorial Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms. Connect Me on Google+
Discuss: yum clear cache
Post your Comment


text:
8tracks Radio is a light and gorgeous 8tracks application that lives in your menu bar and in very few steps you can dive into your favorite mixes. We developed it with simplicity in mind, so searching for mixes has never been easier: just enter your favorite tags and you are ready to go.
The player is built on top of the playlist cover, giving the user a pleasant experience while using the app. This lite version of 8tracks Radio offers the basic functionality seen on 8tracks.com. We are working on a new, premium version, that will give you the full power of 8tracks: user login, liked mixes, history, sharing and more...
What's New
- Add/remove mixes to/from collections
- Open mix link in browser
- Sleep timer
- When monitor switches to stand-by, music continues
- A bunch of bug fixes
- OS X 10.9 or later


text:
Today is the third day of the 60-day session.
By STEVE BOUSQUET, Times Staff Writer © St. Petersburg Timespublished March 6, 2003
The House Judiciary Committee voted 13-5 Wednesday for a bill allowing voluntary prayer at graduations and high school assemblies.
The rapid movement on the measure in the session's second day showed its strong support in the overwhelmingly Republican House. The proposal failed last year because the Senate refused to take it up, and a similar result is likely this session.
The measure (HB 243), sponsored by Rep. Wilbert "Tee" Holloway, D-Miami, lets school boards allow invocations or benedictions "at the discretion of the students" and led by a student. They must be "nonsectarian and nonproselytizing in nature."
Lobbyists for the American Civil Liberties Union and the Florida Association of Jewish Federations said the bill would infringe on the rights of religious minorities.
"Prayer should be about uniting people, not dividing people," said the ACLU's Larry Spalding.
Freshman Rep. Juan-Carlos Planas, R-Miami, voted for the bill. "I don't like the fact that all of a sudden, when we say that it's not such a bad thing to pray, it's seen as an attack. It's not. This country has a very deep religious tradition," he said.
Rep. John Carassas, R-Belleair, also voted for the bill, which now goes to the full House.
From the state wire Hurricane Jeanne appears on track to hit Florida's east coast Rumor mill working overtime after Florida hurricanes Developments associated with Hurricanes Ivan and Jeanne Four killed in Panhandle plane crash were on Ivan charity mission Hurricane Frances caused estimated $4.4 billion in insured damage Disabled want more handicapped-accessible voting machines USF forces administrators to resign over test score changes Man's death at Universal Studios ruled accidental State child welfare workers in Miami fail to do background checks Hurricane Jeanne heads toward southeast U.S. coast Hurricane Jeanne spurs more anxiety for storm-weary Floridians Mistrial declared in case where teen was target of racial "joke" Panhandle utility wants sewer plant moved to higher ground State employee arrested on theft, bribery charges Homestead house fire kills four children, one adult Pierson leader tries to cut off relief to local fern cutters Florida's high court rules Terri's law unconstitutional Jacksonville students punished for putting stripper pole in dorm FEMA handling nearly 600,000 applications for help Man who killed wife, niece, self also killed mother in 1971 Producer sues city over lead ball fired by Miami police Tourism suffers across Florida after pummeling by hurricanes Key dates in the life of Terri Schiavo An excerpt from the unanimous ruling in the Schiavo case Four confirmed dead after small plane crash in Panhandle Correction: Disney-Cruise Line story


text:
Girl juvenile offenders exhibit more problems, risks than boys
...rs were not surprised that boys showed higher risk levels than girls in the area of prior offenses, Gavazzi said, and that girls had higher risks for family and parenting issues, mental health, traumatic events and health issues. But it was surprising that girls exhibited more risk for psychopathy, which i...Diabetes medication pioglitazone HCl may significantly improve predictors of cardiovascular risk
...e, recent findings have indicated that testing CRP levels in the blood may be a new way to further assess cardiovascular disease risk. For people with type 2 diabetes, the risk of cardiovascular disease is two to four times that of the general population, thus making this population a very high-risk group....Immune system lab model overcomes ethical limits on human hematopoietic stem cells studies
...human immune system were limited by relatively low levels of success in engraftment of HSCs and the failure of the engrafted cells to produce fully functional immune cells. Engraftment is the process in which stem cells infused into the body are accepted, after which they produce the various types of blood ...New fat is needed to clear old fat from the system
...ers, the transgenic mice developed low blood sugar levels on the zero fat diet. Both symptoms were reversed with dietary fat, and in fact on a normal diet, the transgenic mice were no different than normal mice in terms of body weight, body fat, metabolic rate and food intake. The effect of added dietary fa...Two studies offer clues about how alcoholic behavior is 'switched' on
...eptors in strains of mice with genetically varying levels of D2 receptors. Earlier Brookhaven studies have s...ene therapy" in mice with normal to moderately low levels of D2s, supporting the idea that receptor up-regulation could play a role in the treatment of alcoho...Regular vigorous physical activity could slow progression of prostate cancer
CHICAGO Men with higher levels of physical activity may reduce their risk of dyin...roups or for substantially high, but not moderate, levels of activity," according to background information in the article. However, many of these studies did...Atorvastatin shows promise in small trial for the treatment of mild to moderate Alzheimer's disease
...cium significantly reduces circulating cholesterol levels and may have a positive effect on the progressive deterioration of cognitive function and behavior anticipated in mild to moderate AD," the authors write. "As a pilot proof-of-concept study, significant differences were not expected, but benefits ide...Low-fat dairy foods may help reduce risk of type 2 diabetes
...Study. "Our study found that men consuming higher levels of dairy products, especially low-fat dairy foods,...s. Results showed that those men consuming higher levels of dairy foods had significantly less risk of developing type 2 diabetes than did those consuming th...News briefs from the journal Chest, MAY 2005
...re the operation had significantly improved oxygen levels with only a slight increase in bleeding. This group had a significantly shorter ventilation period following the surgery, an average of 3.8 hours compared to 6.9 hours, as well as a significantly shorter stay in the ICU. They also had significantly...Sensor warns of gastrointestinal problems
...ssed in using the sensor to measure carbon dioxide levels in the brains of intensive care patients, as this can provide information about the patient's recovery. Further the sensor can be adapted to measure other substances such as glucose or specific ions. Sebastiaan Herber's research is being funded by T...Study suggests antibiotic may limit or prevent vision problems caused by diabetes
...ep further to show that in early diabetes elevated levels of cytokines activate microglia, which produce neu...the course of diabetes, the team compared the mRNA levels of cytokines in the retinas of rats with diabetes to healthy rats. Increasing mRNA levels are an ind...Researchers consider possible mechanistic links between obesity and asthma
...excessively. There are also changes in the blood levels of hormones derived from fat tissue in the obese t...lammatory and obese individuals have higher leptin levels than lean individuals. Leptin is found at higher levels among asthmatics regardless of the extent o...Kids at risk for lead poisoning don't get necessary testing
...and also those identified with elevated blood lead levels through screening, were the least likely to get fo...t of children in Medicaid with elevated blood lead levels identified through screening got the necessary follow-up testing to prevent lead poisoning, and of t...Fragile US vaccine system needs improvement despite dramatic gains in health over past century
...third-party payers that has resulted in record low levels of vaccine-preventable diseases and record high levels of immunizations among children. According to the article, however, problems with vaccine supply, c...Children with high blood lead levels often do not receive follow-up tests
...ldren because even modest elevations of blood lead levels can be harmful. However, screenings are only effe...,682 Medicaid-enrolled children with elevated lead levels who had follow-up testing done. The study included children ages six years or younger who had a scre...Statin therapy cost-effective for a wider range of individuals
...e cost-effectiveness for participants with varying levels of vascular disease risk. They found a 22% relative reduction in the costs of hospitalisations for vascular events in the statin group, with similar proportional reductions in every sub-category of patients studied. Overall, the cost of avoiding a ma...Soft drinks consumption may increase the risk of childhood obesity
...t drinks instead of milk, which can decrease their levels of protein, calcium, zinc, and vitamins A and C. The American Academy of Pediatrics Committee on School Health has stated that the consumption of soft drinks in schools can lead to obesity. Despite this, one study showed that out of 523 school dist...Penn study shows liver receptor key to diet-dependent differences in blood lipid levels
...k in explaining the relationship among diet, lipid levels in blood, and atherosclerosis. The research team s...R activity throughout the body, reduce cholesterol levels in the blood, they also lead to high levels of triglycerides. Surmising that a targeted approach mi...Can rice bran oil melt away cholesterol?
...xicology journal. They show that total cholesterol levels in animals dropped by 42 percent, and LDL or "bad cholesterol" levels dropped up to 62 percent, after their diets were supplemented with a concentrated form of Vitamin E ...... - 10.15 Donald Pfaff: Differences in transcript levels in specific regions of male and female brains during the period of CNS sexual differentiation. Laboratory of Neurobiology and Behavior, The Rockefeller University, New York 10.15 - 10.45 COFFEE 10.45 - 11.15 Roger Gorski: Cerebral dimorphism,...


text:
Higher education delegation bound for China includes president of FHSU and 2 Kansas regents |
10/02/2001 |
HAYS. KS -- Dr. Edward H. Hammond, president of Fort Hays State University, and Clay Blair, chair of the Kansas Board of Regents, will lead a delegation to mainland China to meet with government and education leaders. |


text:
Street Address:
4900 Bissonnet
Suite 103
Bellaire, TX 77401-4035
Mailing Address:
4900 Bissonnet St Ste 103
Bellaire, TX 77401-4054
2 Blocks West of Loop 610.
Phone: (713) 660-0990
Fax: (713) 660-6521
Office Hours:
Mon-Thurs 9:00am to 5:00pm
Friday 9:00am to 4:00pm
Saturday by Appointment
My background and achievements
- Monmouth University Graduate
- State Farm Agent since 1984
- Ambassador Travel Qualifier
- Long time resident of Houston
- Supports SPCA and CAPPS
- Mentored a team member to become an Agent
Meet the team
- Silvia Salazar - Customer Relations Representative
- Valorie Pilicer - Multiple Line Representative
- Mona Baba
- Jason Mallard - Marketing Representative
- Andrea Kawaja - Office Manager
Our mission is to help people manage the risks of everyday life, recover from the unexpected and realize their dreams.
Driving Directions
Email Me
Do you have a policy or an account with State Farm?
Please contact this agent for a quote.


text:
About Us
Contact Us
Economy and Trade
Civil Society
Human Rights
Media &
What is RSS?
Global Affairs
EU Expansion
Latin America
Mideast &
In Focus
Sunday, April 26, 2015 6:29 GMT
New Push to Clean Toxic Hotspot
Sam Cassanos
NEW YORK, 28 Jul (IPS) - Two New York City Congressional representatives are calling for Newtown Creek, one of the country's most polluted waterways, to be tested for the high levels of toxic chemicals that would qualify it for Superfund clean-up.
Superfund is a federal remediation programme for endemically polluted sites established in 1982. If the creek receives the designation, as much as 90 percent of the clean-up costs could be covered by the federal government, a sum estimated at 15 million dollars.
The Environmental Protection Agency, which implements Superfund, is now reviewing the request from Reps. Anthony Weiner and Nydia Valazquez. According to Superfund press officer Elizabeth Totman, the agency will present a response to the request in the 'near future'. One of the issues the review will consider is the efficacy of the current remediation efforts. 'They are asking us to become the lead in the cleanup,' said Totman. 'It would make sense before we jump in to see if there is anything that should be done to improve on what the state is doing.'
The tests Weiner and Valazquez are seeking would assess the threat to human health and the environment from Newtown Creek and ultimately determine if it is eligible for Superfund designation. This investigation, known as a 'hazard ranking', assigns a numerical variable to the threat posed by four different sources: ground water, surface water, soil exposure, and air migration.
These statistics are combined to determine an overall site score. If the site under investigation receives a high enough score, it receives Superfund designation and is placed on the National Priorities list.
Located between Brooklyn and Queens, Newtown Creek is the site of the largest oil spill in U.S. history. In 1978, after a coastguard helicopter spotted an oil slick on the creek, it was discovered that Mobil and other oil companies had let an estimated 17 million gallons of oil seep out of its properties and into the water. The spill, which covered 55 acres, is at 50 percent larger than the infamous Exxon Valdez incident.
A major reason Superfund designation has been suggested is that the creek's problems are vaster and more complex than even this oil spill would indicate. Newtown Creek bears the burden of centuries of industrial development in the neighbourhoods that border it. Many of the companies responsible for the creek's contamination are now defunct and cannot be held accountable for the costs of remediation.
Shipbuilding yards were Newtown creek's first major industrial neighbour, but textile factories, leather tanneries, and copper smelting, to name just a few, soon followed. However, more than any other industry, the petroleum refineries in nearby Greenpoint, Brooklyn have had the most damaging effect on the creek.
From 1866 until 1966, petroleum was refined in Greenpoint. Many of the major oil companies, including British Petroleum, Amoco, and Standard Oil (the predecessor of ExxonMobil), operated in the neighbourhood. In the 1940s oil began to leak into the sewage pipes along the creek. In 1950, the gasoline ignited with the underground sewage and shot 25 manhole covers as high as three stories in the air, shattering 500 windows.
In addition to suffering from generations of industrial pollution, Newtown Creek's problems are compounded by New York City's Combined Sewage Overflow system. The system takes the excess sewage that the main system cannot handle and feeds it into Newtown Creek, adding street runoff, garbage, oil, and raw sewage to the already contaminated water.
Tests in Greenpoint have shown that there are toxic vapours, containing the carcinogenic chemical benzene, beneath the surface. However, the effect of the pollution on the area's public health has yet to be fully determined.
A situation such as this, in which a large number of companies, many of them no longer in existence, as well as the city government, are all polluters, is 'exactly the type of situation Superfund was designed for', said Katie Schmidt. director of the grassroots Newtown Creek Alliance.
Schmidt told IPS that the federal Superfund addresses problems in which responsibility for the damage is not immediately clear, but can be established after the proper remediation has taken place. 'If we got a commitment from the federal government under Superfund,' she said, 'the idea would be that we would clean up Newtown Creek and make determinations over what came from what company, and rather than litigate everyone would decide on a payment plan.'
Environmental activists, as well as the City and State governments, have been working for decades to restore Newtown Creek but their efforts have yielded only partial success. ExxonMobil reached a consent agreement with the New York State Department of Environmental Conservation in 1990 and has removed an estimated 9.5 million gallons of oil from the creek.
However, both the terms of the agreement and its implementation have been criticised. The deal did not require ExxonMobil to compensate the communities affected by the pollution it is responsible for, nor is the company required to meet any benchmarks during the course of the remediation. A September 2007 New York Times editorial accused the Department of not being aggressive enough in enforcing the agreement's terms.
To make matters worse, the project has created new environmental problems. In 2007, the environmental group Riverkeeper and several co-plaintiffs filed suit against ExxonMobil for discharging millions of gallons of contaminated and carcinogen laden water into the creek.
The quest for corporate accountability has been an ongoing saga led by activist groups and elected politicians. In 2004, Riverkeeper, along with the Brooklyn borough president and two New York City Council members, filed a suit against ExxonMobil. New York State Attorney General Anthony Cuomo also filed a suit against the same company in 2007 in order to get it to expedite remediation efforts.
Activists welcomed the potential Superfund designation as being complementary to the lawsuits still in progress. 'Many people active in the environment in the New York community have no idea about this spill,' said Ethan Orginel, editor of the environmental website GreenBrooklyn.com. 'Federal designation would be very useful in creating a critical mass of awareness, where basically those who are responsible cannot sit back and do nothing.'
The current state of the creek is an improvement from its past condition. David Freeman, who grew up in Greenpoint but now visits the neighbourhood only occasionally, remembers the creek being 'much cloudier' and dotted with pools of rust during the 1960s and 70s.
In those days, Freeman says, he and his friends would swim in the creek's polluted waters. He regards the current situation as a 'vast improvement' from the creek of his youth.
Despite these improvements, Newtown Creek is unpleasant to live by. On many evenings, residents of Greenpoint still endure the smell of raw sewage that emanates from the waterway.
'On a bad day, everybody smells it,' said Brian Hersey, whose apartment on Nassau Avenue, nearly a mile away from the water, is still within reach of its odour.
For Hersey, Newtown Creek's pollution problem is a reminder of Brooklyn's history as an industrial centre. 'As Brooklyn's past is disappearing, it would be nice to clean it up,' he said, adding that he is doubtful that the creek will receive the remediation that it deserves.
Download PDF
See also
Shift to Renewables Seems Inevitable, But Is It Fast Enough?
Foreign Fighter Recruits: Why the U.S. Fares Better than Others
Opinion: Two Winners and One Loser at the Summit of the Americas
Latin America Heralds New Era with United States
Economic Slowdown Threatens Progress Towards Equality in Latin America
From Punta del Este to Panama, the End of Cuba's Isolation
Child Labour on U.S. Tobacco Farms: A Stubborn Problem in a Billion-Dollar Industry
Obama Prepares for Showdown with Congress Over Iran Deal
U.N.'s Next Stop: Humanitarian Summit to Resolve Exploding Refugee Crisis
In Thrall to the Mall Crawl and Urban Sprawl
Opinion: Rape in Conflict
Share this story
Support Us
Contact Us
About Us
Internship Programme
Help us Improve
News in RSS
Copyright © 2015 IPS North America. All rights reserved.


text:
James Joyce |
0 comments
Happy Bloomsday!
All of the narrative action in James Joyce's monsterpiece of a novel Ulysses takes place on a single day—June 16, 1904—to commemorate the day that Joyce met his wife, Nora Barnacle. Today, fans of the book celebrate that date as Bloomsday. More »


text:
Cooley Group earns ISO certification
FabricGraphics.com | November 7, 2012
Cooley Group, a global developer and manufacturer of high-performance, sustainable-engineered membranes, completed certification as an ISO 9001:2008-compliant organization. The certification is an International Quality Standard developed by the International Organization for Standardization (ISO), a worldwide federation of national standards bodies representing over 120 countries.
"Our company has an 85-year history of proven performance, and we are now pleased to provide our customers with an added standard of quality," said Dan Dwight, Cooley Group president and CEO. "ISO Certification is further proof of Cooley's commitment to the highest manufacturing standards as we expand globally."
The ISO 9001:2008 standard provides a true and tested systematic framework for managing a company's manufacturing processes. It identifies the steps that result in consistent performance and operational efficiency. The most important goal of ISO certification is continuous improvement through the use of internal and external audits and process documentation.
Source: Cooley Group
There are not yet any comments.


text:
Previous Section | Index | Home Page |
The Parliamentary Under-Secretary of State for Health (Mr. John Horam): As my hon. Friend the Member for Harrow, East (Mr. Dykes) said, we have had a number of Adjournment debates on this matter. As he will recall, I have already replied to one of those, which he initiated. Until today, however, I had not had the pleasure of replying to an Adjournment debate initiated by my hon. Friend the Member for Hendon, North(Sir J. Gorst), but I know of his continuing concern about the issue.
My hon. Friend the Member for Hendon, North dealt, centrally, with the issue of emergency medical care. I should like to consider for a moment the original consultation carried out by Barnet and Brent and Harrow health authorities in 1994. My hon. Friend started the debate by mentioning the history of the project. We have been considering that consultation exercise, on which the changes in service at Edgware were based.
6 Dec 1996 : Column 1359
The consultation document made some important points. It said that there is a growing acknowledgement that fewer centres, with a larger population base and a higher number of emergency cases attending them, provide an improved service. That is not just what Barnet and Brent and Harrow health authorities thought; it is what the evidence shows.
That evidence is substantial. A report by the Royal College of Surgeons in 1988, called "The Management of Patients with Major Injuries", said:
Sir John Gorst:
All that my hon. Friend says is fair, but one important thing that he leaves out is the social factor. The facilities were to be removed from an area that was deprived in many ways--in terms of income, old age and an immigrant population--but the most important factor was the transport that would take people in an emergency to a nearby A and E department. That problem is not solved by anything that my hon. Friend has said.
Mr. Horam:
I shall deal with transport in a moment. My hon. Friend the Member for Harrow, East also raised the matter in the debate that he initiated.
I have described the situation with regard to Barnet general hospital. Edgware will have a new type of local hospital--one that provides a wide range of services for local people. Its services will include a casualty service. The unit at Edgware will be open 24 hours a day. It will have doctors in attendance.
Those are not the features of the original proposals put forward by Barnet health authority, which were for a nurse-led service open only 13 hours a day. Thus, the original proposals have been revised and improved, which represents a real commitment to listening and responding to local wishes. The proposals are in line with my right hon. Friend's assurances to both my hon. Friends. The words were explicitly mentioned in the letter of June this year, which my hon. Friend the Member for Hendon, North mentioned.
6 Dec 1996 : Column 1360
I should say to my hon. Friend the Member for Harrow, East that, although I cannot speak for my right hon. Friend in this debate on this particular matter, I do not believe that he would have any objection to publishing the June letter.
Mr. Dykes:
The letter refers--I can give the paragraph reference, if my hon. Friend wishes--to the provision of a casualty service and specifically not to a minor accident treatment service.
Mr. Horam:
Indeed, the letter uses the word "casualty". My hon. Friend refers to the distinction that I have just made--the uprating of the existing proposals along the lines that I described.
Sir John Gorst:
My hon. Friend the Minister has made an important change in the position because of what he has just said to my hon. Friend. As recently as the night before last, the Secretary of State declined absolutely to permit the letter to be published. Is my hon. Friend now saying that my right hon. Friend has had second thoughts? That is an important factor in demonstrating to a wider public exactly what we were promised.
Mr. Horam:
As I said, I cannot speak for my right hon. Friend in this debate, and I have not been privy to any conversations that might have taken place between my two hon. Friends and my right hon. Friend. I do not know what was said on those occasions, but I am saying off the cuff that I do not believe that my right hon. Friend would object to the publication of the letter on his own account. I am merely stating that opinion.
Obviously, transport is a matter of concern--in a sense, access to services is as important as the services themselves. Under the new arrangements, no Barnet resident will need to travel more than six miles to an A and E department. The Wellhouse trust provides a bus service for patients, visitors and staff between the Barnet and Edgware sites. The service, which supplements existing public transport links, will be maintained and improved.
In addition, the Department of Health has commissioned a survey to provide reliable information about journey times and optimum travel routes for people travelling by car from the Edgware hospital catchment area to each of the hospitals that they may need to travel to--that is, Barnet, Northwick Park and the Royal Free. The survey will also provide comparative information about public transport travel times. The survey data will be used to assist the health authorities in providing information to the public about travel times and optimum modes and routes of travel for Edgware residents to the other hospitals.
There has also been work by a project group comprising the health authorities, trusts and local authorities along with London Regional Transport, community health councils and disability groups. The group has identified areas for action in both public transport and special needs transport. A particular aim is to ensure that there are reasonable public transport routes for people who may have difficulty changing buses. As a result of the group's work, discussions are taking place with London Regional Transport with a view to implementing improved bus services between
6 Dec 1996 : Column 1361
The group will undertake a further review and evaluation of the adequacy of transport services in the six months after implementation of the planned changes--including a survey of the transport needs of hospital users and visitors and their level of satisfaction--which will provide an opportunity to initiate more action if that is required. I also draw to my hon. Friends' attention the fact that health authorities are spending no less than £320,000 on improving the London Ambulance Service in their area. I understand that they will provide two extra ambulances and crews to help meet demand in the immediate area.
I have already mentioned that Edgware will have a new type of hospital, and I shall now enlarge on that statement.
Mr. Dykes:
My hon. Friend has accepted that there should be a full casualty service, and we are grateful to him for making that promise on the record. In order to avoid any future doubts and procrastination, will he list specifically the conditions that will be treated by the new casualty emergency service at Edgware general when the old unit is closed?
Mr. Horam:
I am about to do precisely that.
The hospital will include general out-patient services and a diagnostic and therapy service--for example, radiology. It will also provide day surgery; a breast-screening service; elderly and rehabilitation services; and a range of mental health services, including in-patient units, outreach and assessment services, a base for community mental health teams and a brain injury rehabilitation unit. There will also be children's services, including specialist out-patient clinics and an education and information centre.
That is not all. As my hon Friends know, Barnet health authority is submitting an application for central funding for a demonstrator project at Edgware general hospital, with a number of key elements. First, the casualty service will be open 24 hours a day--I have mentioned that already--and, secondly, a low-risk maternity unit will be provided to allow mothers to give birth close to home. Thirdly, there will be a GP-type admissions unit to provide in-patient beds, to meet the immediate needs of elderly people living locally.
Mr. Dykes:
What injuries will be treated by the casualty unit? What services will it provide?
Mr. Horam:
It will provide a normal casualty service. My hon. Friend should understand that it is not an A and E department: it will treat the injuries normally dealt with by a casualty service.
"there are far too many small units treating serious injuries and we consider that smaller departments should be closed or have their ability to treat major injuries restricted."
In March 1995, the Department of Health published a review of the literature on accident and emergency departments and clinical outcomes. I am sure that both my hon. Friends are equally concerned about clinical outcomes. The review stated that
"existing research . . . has been enough to mould a consensus, shared by many professional staff and by health authority managers, that larger accident and emergency departments offer better care to seriously ill or injured patients."
That was the context for proposing that there should be a new accident and emergency department at Barnet general hospital, and that the accident and emergency department at Edgware general hospital should close when the new unit opened. The then Secretary of State for Health approved that proposal in April 1995. Since then, matters have moved forward.
Next Section | Index | Home Page |


text:
Tuesday April 21, 2015; 05:37 pm EDT
2nd Star's Hello, Dolly!
It would be a shame for one seat to go empty during this run.
Debuting to 10 Tony Awards 50 years ago, Hello, Dolly! is a rarity among musicals: song and dance blend seamlessly with story, its buoyant innocence saving it from contrivance. Based on Thornton Wilder's play The Matchmaker, it's a perfect vehicle for 2nd Star Productions, long recognized for outstanding musicals. The combination of strength in show and talent makes this the best amateur musical production I have seen in 13 years of reviewing.
Dolly Levi (Nori Morton), as charming as she is perceptive and manipulative, is a marriage broker who, after a long widowhood, has set her own matrimonial sights on Horace Vandergelder (Gene Valendo), the half-millionaire from Yonkers who also happens to be her client. Horace is set to marry Irene Molloy (Pam Schilling), a lovely widow and milliner from the city. But his quest does not end as he — or six younger romantics — anticipated, as Dolly lets drop some slanderous rumors about Irene's character.
Horace's two clerks at Vandergelder's Feed Store — Cornelius (Nathan Bowen) and Barnaby (Daniel Starnes) — close the store without Horace's knowledge to follow him, intent on sightseeing and kissing a girl — all on two dollars. Horace's niece Ermengarde (Emily Freeman), meanwhile, steals off to the city at Dolly's urging with her forbidden love Ambrose (Josh Hampton). Dolly enters the pair in a polka contest at the swanky Harmonia Gardens Restaurant, where Horace will dine.
In the city, Cornelius and Barnaby spot their boss and take refuge in Irene's hat shop, where Horace discovers them and abandons Irene. She and her assistant Minnie (Colleen Coleman) then fall for Cornelius and Barnaby. Dolly next sets up Horace with a mannequin, then with Ernestina (Rebecca Feibel), a crass floozy, interrupting their miserable tête à tête so that he will fall for her in desperation. Horace's employees, meanwhile, are trying to entertain the milliners on a pittance in an adjacent booth when an accidental wallet swap saves their day but causes Horace to be arrested for not paying his bill. The polka contest turns into a riot. Everyone is hauled to court, but Cornelius saves the day with a speech on the power of love that moves the Judge (Mark Jeweler) to free everyone but Horace. Dolly, of course, is there to save his day.
There is not a clinker in this cast. The leads, all well cast, know how to sell their songs. With hummable hits like Put on Your Sunday Clothes, It Takes a Woman and It Only Takes a Moment, the singing is pitch-perfect and the dancing precise. Morton is every inch the marvelous meddler; Valendo delivers just the right blend of tightwad anxiety; Bowen charms with naïve sincerity and energy to burn; Starnes is an impressive presence as the teen playing a teen; Schilling sings like a lark in Ribbons Down My Back and Coleman is her perfect ingénue foil. Tim Sayles is hilarious as Rudolph, the maître d' who barks orders like a German drill sergeant in the Waiters' Galop, a stunning ballet of tuxedoed servers. Feibel wrangles the laughs with her bumptious shenanigans. There are even children — two talented girls — always a welcome sight in community theater choruses.
Sets and costumes are a feast for the eyes with half a dozen ornate set changes and two dozen beautiful ensembles complete with parasols, plumes, boaters and bonnets. The robust nine-piece orchestra sometimes overpowers the soloists, but never a word is lost.
Money is like manure. It isn't worth anything unless you spread it around, Dolly is fond of saying. The same is true for talent. It would be a shame for even one seat to go empty during this run. So buy your tickets now, Before the Parade Passes By.
Hello, Dolly! by Stewart and Herman. Director and set designer: Jane B. Wingard. Costumes: Linda Swann. Musical director: Joe Biddle. choreography: Vincent Musgrave. Lights and sound: Garrett R. Hyde. With Heather Jeweler as Mrs. Rose and Brianne Anderson, Aaron Barker, Rosalie Daelemans, Austin Dare, Genevieve Ethridge, Samantha Gardner, Ethan Goldberg, Ann Marie Hines, Julie Hines, Amy Jones, Crista Kirkendall, Brigid Lally, Erin Lorenz, Rebekka Meyer, Spencer Nelson, Malarie Novotny, Sharon Palmer, Sophia Riazi-Sekowski, CeCe Shilling, Jordan Sledd, Deb Sola and Sarah Wessinger.
Playing thru June 29. F & Sa at 8 pm; Su at 3pm at 2nd Star Productions: Bowie Playhouse, White Marsh Park. $22 w/discounts; rsvp 410-757-5700; www.2ndstarproductions.com.
- Login or register to post comments
- Share this!