PATRICK JOSEPH BESONG: December 2007 Archives
I happened across this product today that I thought might have some value to higher ed. It's called a SlingBox. What it allows you to do is to watch what comes over your TV connection from any internet connection in the world. The box is plugged into your internet router at home, then into your TV signal receiver. It can then broadcast TV over the internet. I'm not sure exactly how it works, but it basically creates a video stream of pretty good quality that you can watch from any computer that has the SlingBox player s/w installed. It works on both Mac and PC and will even work on cell phones and palm devices. Here is the link:
http://www.slingmedia.com/
(Watch the videos on the site. I like the one with the mime.)
It's fairly cheap, too, starting at $129, $179, and $229 for the Pro model, which has the capability to be able to control the channel like a virtual remote), and send out HD video even over a DSL connection. Customer reviews are for the most part very favorable.
I was wondering whether something like this could be set up in a classroom to send video content to a computer set up elsewhere to receive and record the signal and prepare it for further distribution. Might be an interesting addition to Apple's Podcast Producer, or what TNS has been looking for to record Polycom conferences.
Honestly, my first impression was - WTF? Actionscript 3.0 is quite a departure from 2.0. There are quite a few differences that will change the way you develop in Flash. I thought a good way to learn 3.0 was to take the simulation I did and recode it to meet 3.0 specs. I figured if I was going to give this away in San Diego, I might as well try to be current and give it a little longer shelf life. This was no easy task as I was to find out.
One big change in 3.0 is that there is no code permitted in buttons. All the code for controlling buttons is written into the actions layer of the timeline. Although it's quite a different way of working and requires more code, the one good thing I can say about this rule is that you don't have to keep opening buttons to see what the code is and where to change it. It's all there in the timeline. The bad part also is that ... it's all there in the timeline. At least opening the button you know what code goes with the button.
Another thing is that buttons don't automatically understand that they need to do something when they're clicked on. You have to tell Flash to listen specifically for when a button is clicked. In AS 2.0, I could click open the Actions panel for a Submit button and type in:
on (release) { play(); }
In AS 3.0 I have to open the Actions panel for a frame in the timeline and first create an event listener object like this:
submitBtn_mc.addEventListener(MouseEvent.CLICK, submitAnswer);
Then I need to write a function that will be carried out when it's clicked on:
function submitAnswer(event:MouseEvent):void
{
play();
}
In my simulation, however, it wasn't as simple as making the timeline play. I needed it to check which radio button was selected, update the counter, and then play so it would have to reload the data in the Flash movie. So here's what my Submit button does when you click on it:
submitBtn_mc.addEventListener(MouseEvent.CLICK, submitAnswer);
function submitAnswer(event:MouseEvent):void
{
photo.removeChildAt(0);
if (button1.selected == true) {
counter = destination1;
play();
} else if (button2.selected == true) {
counter = destination2;
play();
} else if (button1.selected == false && button2.visible == false) {
counter = destination1;
play();
}
}
Note the phrase in the above code that says:
photo.removeChildAt(0);
I had to add this because if I didn't, when I loaded a JPEG image into Flash, it would always stay there and not get replaced when a new one is put there to replace it. The new one would just go on top of it on another level. The code says to remove the child of "photo" (the name of my movieclip that I add the jpeg to) that resides at level 0. This would not have been necessary in AS 2.0, however, it looks like there may be more options if you can load more than one image into a movieclip on different levels.
Another whacky thing that really gave me a WTF Moment was that I could not easily change the font size and color of the text next to my radio buttons. The components in AS 3.0 are different than AS 2.0. I can no longer just change a few parameters for my component in the Component Inspector. To change the size, font, and color, I have to write some special code like this:
var tf:TextFormat = new TextFormat();
tf.color = 0xFFFFFF;
tf.font = "Arial";
tf.size = 14;
button1.setStyle("textFormat",tf);
button2.setStyle("textFormat",button1.getStyle("textFormat"));
That's real intuitive, is it not?
And here is the code I had to use to load the jpeg into a movieclip:
var request:URLRequest = new URLRequest(imageArray[counter]);
var loader:Loader = new Loader();
loader.load(request);
photo.addChild(loader);
No more simple loadMovie() commands.
One thing I do like in AS 3.0, however, is that to make a button invisible, you no longer need the underscore in front of "visible". It's just:
submitBtn.visible = false;
I did manage to get the whole simulation working in AS 3.0, but it took me a lot longer than I had ever anticipated. It also took a few bulletin board posts and some nice people to help me figure out WTF I was doing.
My son, Max, a senior at Bald Eagle Area High School, has been learning Flash on his own. For his FBLA (Future Business Leaders of America) project, he wanted to do a website on the Centre County Marching Band Festival of which he participated as a member of the BEA Marching Band (he's the trumpet section leader this year). As promised in my previous blog post, here is the link to his site. I put it up in my personal space temporarily until the high school puts it up on their server.
http://www.personal.psu.edu/pzb4/max/ccmbfsite.swf
He designed and animated the site entirely on his own. I only showed him how to code his link buttons properly and how to import the video clips into Flash. Not bad for a rookie, no?
