a ROLL_OUT without having first got a ROLL_OVER?
- Clicks that land on the video control should be stopped there and not
allowed to trickle back up, potentially triggering the furni action that
someone's set on the video.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4611 542714f4-19e9-0310-aa3c-eee0fc999fb1
When you mouse-over it, the controls appear, which are currently only
a pause/play button. When it reaches the end, it autorewinds and pauses.
Things:
- We may want all videos to start paused. However, since we're not using
a streaming media server, there's no way to show the first frame without
loading the video unless we screenshot it on the server and then include
a secondary media ident, which we don't do. So: as long as the user has
to load the FLV, we may as well play it and not make it just look like
an image.
- We'll probably want to adapt this into a standalone video displayer that
can be used to view FLVs using our UI from inside a web page.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4610 542714f4-19e9-0310-aa3c-eee0fc999fb1
There are a few rough edges which'll eventually get ironed out.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4607 542714f4-19e9-0310-aa3c-eee0fc999fb1
some custom event to communicate a value to listeners. This is for that.
CommandEvents are close, but are all dispatched using a single 'type' value,
so a single handler must have a switch statement in it (unless you're
a controller, which has magic to call the right method.)
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4606 542714f4-19e9-0310-aa3c-eee0fc999fb1
and turned out to not be the class that was sucking in vast quantities of
flex code. Alas.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4596 542714f4-19e9-0310-aa3c-eee0fc999fb1
Hashtable -> HashMap
The one regularly used is now called HashMap. It can have keys of simple
flash datatypes, as well as objects that implement Hashable.
HashObjectMap has the ability to use nearly any object as a key, but
pays a price for it and should be avoided unless you need it.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4591 542714f4-19e9-0310-aa3c-eee0fc999fb1
had the capability to add targets (with their own module / log-level).
Add back in this capability, in very simple form for now.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4584 542714f4-19e9-0310-aa3c-eee0fc999fb1
objects so was not seeing NPEs that others were.
Fixed.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4581 542714f4-19e9-0310-aa3c-eee0fc999fb1
Make Long not wrapped for now.
Don't svn update until after mdb regenerates everything..
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4569 542714f4-19e9-0310-aa3c-eee0fc999fb1
(Put the user content as a child of the system ApplicationDomain).
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4544 542714f4-19e9-0310-aa3c-eee0fc999fb1
I thought I was casting: Function(myObject)
I gotta remember that the function-looking variants do more than cast.
For example:
var o :Object = null;
var s :String = String(o);
trace(s.length); // outputs 4. (s === "null", now)
Apparently Function(args) tries to evaluate the arguments as if they were
code. Switched to casting like (args as Function);
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4539 542714f4-19e9-0310-aa3c-eee0fc999fb1
Created a simple MethodQueue utility class that works nearly identically
to UIComponent.callLater().
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4537 542714f4-19e9-0310-aa3c-eee0fc999fb1
It's not needed, as the 'int' class has various formatting functions.
These functions can even be called on constants, if you trick the compiler
a little bit by wrapping them in parens:
trace("hex: " + (4097).toString(16));
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4522 542714f4-19e9-0310-aa3c-eee0fc999fb1
Changed the name to _controlledPanel because otherwise it interfered with
subclass _panel variables. (Actionscript won't let variables be masked).
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4483 542714f4-19e9-0310-aa3c-eee0fc999fb1
In java, if you override a varargs method you can easily call super, you just
have to do a wee cast:
@Override
public Stuff getStuff (int thing, Object... args)
{
return super.getStuff(thing, (Object[]) args);
}
In abjectscript:
override public function getStuff (thing :int, ... args) :Stuff
{
// This doesn't work, because now 'args' to super is an array
// containing OUR args array as its first element.
return super.getStuff(thing, args);
// We can fix things for super by 'apply'ing the function to
// all the args in one array...
args.unshift(thing);
return super.apply(this, args);
// But it could also be the case that someone is intentionally
// passing an array to this method (many flash library methods take
// varargs but also accept arrays and do this same thing).
if (args.length == 1 && (args[0] is Array)) {
args = (args[0] as Array);
}
return super.getStuff(thing, args); // super must ALSO do the unjimmying
// OR, we could combine the two so that super doesn't have to
// do unjimmying.
}
As a note, there is an 'arguments' object that is secretly placed in every
function call, presumably so that callers can test whether an arg is
the default value because the user didn't pass it in or whether it's
the default because the user happened to pass in the default.
Guess yourself, because that doesn't seem worth adding as a language feature.
Anyway, the 'arguments' is not an array! You can't use it to call super
via 'apply'. It's another associative hash. God bless you actionscript,
you just make so much fucking sense.
So I made a utility method for unfucking vargs.
I bitch a lot, yes, but my bitching takes only a fraction of the time
that was wasted discovering whatever it is I'm bitching about
(this was fun to trace backwards to the source, oh yes), and maybe I
can save others some time as a result.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4477 542714f4-19e9-0310-aa3c-eee0fc999fb1