-
I posted to delicious.com
Creating graphic effects using the new #Deco scripts in #Flash Professional CS5 #as3 #cs5
http://www.adobe.com/devnet/flash/articles/deco_effects_flcs5.html?devcon=f1
May 11 2010, 11:14am | Comments »
-
I posted to i-create.org
Tweet Tank in Away3D and Hype
http://i-create.org/2010/05/10/tweet-tank-in-away3d-and-hype/
Alright so I know everyone associates Twitter with birds well all the bird models in the away3dlite, TweetTank I believe this one performs better. It also doesn’t heat up my Mac book like it is going to take off for space (I have noticed that in Firefox it does heat up when using webGL although it is a pre-alpha). I was also able to add sound to this version and use away3dlite a really solid 3d library for flash. This project was pretty easy didn’t take long to create and PreFab really speed up the process. The Experiment:
PreFab is an Air application that allows Awary3d scene designers to easily import and export models for use with away3d. It is also important to note that away3d has spent a significant amount of time to optimize 3d away3d support Away3d I suggest this Amazon book I haven’t read it yet but I look forward to it I just received it today in the mail. Away3d is easy to use and I also highly recommend looking at Launch Experiment Cool Links: Hype Relly Cool Hype Away3d Example Away3D
- Tags:
- 3d
- ActionScript
- Flash
- i-create
- as3
- away3d
- Experiment
- hype
- interactive
- data visualization
May 10 2010, 9:05pm | Comments »
-
I posted to delicious.com
An ActionScript 3.0 Recursion Excursion | ActionScript 3 Design Patterns
http://www.as3dp.com/2008/10/23/an-actionscript-30-recursion-excursion/
April 13 2010, 5:05pm | Comments »
-
I posted to delicious.com
Combining the Timeline with OOP AS3 in Flash
http://www.insideria.com/2010/04/combining-the-timeline-with-oo.html
April 12 2010, 10:36pm | Comments »
-
I posted to i-create.org
Is Apple Becoming the New Big Brother?
http://i-create.org/2010/04/11/is-apple-becoming-the-new-big-brother/
Once upon a time their was young Steve Jobs and he fearlessly forged ahead and helped shape the landscape of today’s personal computing. To tell you the truth Macintosh was for the most part based off of the work that was done at PARC ( LISA which was the first GUI (Graphical User Interface) for personal computing. Some of the brightest luminaries in Computer history worked at PARC like Douglas Engelbart who ran the Recently though Apple has made in my mind some rather bothersome decisions. I fully understand them not wanting to include Flash as a part of their ecosystem. This definitely comes from the need to dominate their platform and insure the sales of apps on the iTunes store. If everyone had the flash player would so many apps actually be sold?? I don’t believe they would be. Up until now Apple devices have had relatively low computing power but this is no longer the case with the iPad. Lots of developers have banded together and created some really cool tools out their like Corona SDK, Google search on Easing Equations you will find Robert Penner at the top. I love both technologies and I really don’t want to be in one of those childish conversations where to whiners, whine about which one is better and which one will when over. It is a silly argument to have in the first place. As a developer it is important to have knowledge of both and not let your opinions cast doubt on one or the other platform. HTML5 will advance to where flash is now but when it does flash will be well beyond where it is today. So I guess I am upset at Apples decision to really kind of flip the bird to the development community and tell everyone they can only use their tools to create content or they have to use HTML5. To be honest with you, I have been thinking about using HTML5 simply to escape the whole Apple approval process. I will definitely be putting my weight around HTML5 and Flash for all the other Mobile platforms. The people at Adobe are not lazy Steve. They worked extremely hard to put together something that they believed would help your iTunes app store and consumers as well and it is not just the people at Adobe you have alienated by this decision.
With the people at Apple making decisions like this you can’t help but wonder how far they will reach to control content. I believe that content is up to the user hopefully they won’t extend policies like this to their bookstore. Really the fact of the matter is people will purchase these devices in mass numbers because it was created by Apple and Apple does have a killer marketing strategy and team. They won’t so much think about the lack of freedom or the buyer lockin to the iTunes ecosystem. In many ways their ecosystem for entertainment is ridiculously far ahead of the competitors. In short it is nothing short of a Monopoly you may not see it yet but it is definitely there. On the other hand their moves may force the development community to swing to Microsoft and Google the Bruce Jawn released his source code for Alchemy compiling of this RayCaster you can find the code
April 11 2010, 9:33pm | Comments »
-
I posted to i-create.org
Simple Flip3D in ActionScript3
http://i-create.org/2010/04/11/simple-flip3d-in-actionscript3/
This code will show you how to develop a simple native actionscript3d Class it shows you two different methods you could use to develop your own flip 3d effect in ActionScript3 this uses Flash Player 10. This code also only uses the built in functionality of Flash with the exception of the use of OOP) of there own rapidly! I have written code that basically once applied to a movie clip will randomly display a frame you will see this in the class you can expand it add new frames to the array etc.. What it does is randomly picks a frame displays the image and then once clicked will rotate the X property of the movie to about 84 degrees and disappear. It also shows you two different ways you could accomplish this task. One way the way I like the best is to use Tweener an animation library that has been around in the Flash community for years. Tweener frees you from the time line in other words your animation is time based instead of frame based. Time based is completely the way to go this ensures your users that they will have the same effect and performance regardless. Time based animation effects have been around in the Flash community for years actually Call the Class from the Frame
var flipID:uint = new uint(1); var sc9MainPortImg1:sc9MainPortImg = new sc9MainPortImg(); addChild(sc9MainPortImg1); sc9MainPortImg1.x=0; sc9MainPortImg1.y=55; sc9MainPortImg1.name = "sc9Img"+flipID; sc9MainPortImg1.buttonMode = true; sc9MainPortImg1.addEventListener(MouseEvent.MOUSE_DOWN, sc9PortClick); function sc9PortClick(e:MouseEvent){ var sc9MainPortImg1:sc9MainPortImg = new sc9MainPortImg(); addChildAt(sc9MainPortImg1,1); sc9MainPortImg1.x=0; sc9MainPortImg1.y=55; sc9MainPortImg1.name = "sc9Img"+flipID++; trace(sc9MainPortImg1.name); sc9MainPortImg1.buttonMode = true; sc9MainPortImg1.addEventListener(MouseEvent.CLICK, sc9PortClick); }
The actual Simple Flip 3D Class
package { import flash.display.MovieClip; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.*; import flash.display.*; import flash.filters.BitmapFilterQuality; import flash.filters.BlurFilter; import flash.net.LocalConnection; import fl.transitions.*; import caurina.transitions.Tweener; import flash.external.ExternalInterface; public class sc9MainPortImg extends MovieClip { public var n:Number; public function sc9MainPortImg():void { randomFrame(); this.addEventListener(MouseEvent.CLICK, spinClick); } public function randomFrame():void{ var frameArray:Array = new Array(); frameArray[0]=1; frameArray[1]=2; frameArray[2]=3; frameArray[3]=4; // Get random number created n=randRange(1,4); trace(n); trace(frameArray); // gotoAndStop Frame lable name this.gotoAndStop(frameArray[n]); } public function spinClick(e:MouseEvent):void{ //this.addEventListener(Event.ENTER_FRAME, spin); --> Enable for Frame Based Animation Example var open_tween={rotationX:-84,alpha:0.0,time:20,transition:"easeoutelastic",delay:0}; Tweener.addTween( this, open_tween); } public function spin(e:Event){ this.rotationX -= 2; if(this.rotationX == -84){ this.visible = false; this.removeEventListener(Event.ENTER_FRAME, spin); } } public function randRange(min:Number, max:Number):Number { // Generate a number between and including min - max var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min; return randomNum; } } }
Download Code
April 11 2010, 2:31pm | Comments »
-
I posted to delicious.com
Adobe Could Respond to Apple’s Flash Snub
http://multitouchup.com/adobe-could-respond-to-apples-flash-snub/
April 11 2010, 10:30am | Comments »
-
I posted to delicious.com
Return of the Blue Lego --> Apple's new policy no plugin warning?? WTF.
http://www.gskinner.com/blog/archives/2010/04/return_of_the_b.html
April 10 2010, 3:26pm | Comments »
-
I posted to delicious.com
Apple Slaps Developers In The Face
http://theflashblog.com/?p=1888
April 9 2010, 7:56pm | Comments »
-
I posted to delicious.com
Bad Apple
http://blog.alastairdawson.com/2010/04/09/bad-apple/
April 9 2010, 7:56pm | Comments »
-
I posted to delicious.com
CasparCG - New Open BroadCast Server
http://www.casparcg.com/features
April 9 2010, 7:53pm | Comments »
-
I posted to delicious.com
Inject JavaScript code in html wrapper from Flex/ActionScript
http://cookbooks.adobe.com/post_Inject_JavaScript_code_in_html_wrapper_from_Flex_A-17157.html
April 4 2010, 11:08am | Comments »
-
I posted to delicious.com
Experimenting With The New Flex 4 Animation/Effects Framework
http://209.112.249.234/blogs/page/andrewtrice?entry=experimenting_with_the_new_flex
April 3 2010, 4:13pm | Comments »
-
I posted to delicious.com
Adobe Flash: One Web. Any Screen.
http://designupdate.com/blog3/2010/04/02/adobe-flash-one-web-any-screen/
- Tags:
- Flash
April 2 2010, 4:06pm | Comments »
-
I posted to delicious.com
Chromium Blog: Bringing improved support for Adobe Flash Player to Google Chrome
http://blog.chromium.org/2010/03/bringing-improved-support-for-adobe.html
April 1 2010, 9:26pm | Comments »
-
I posted to delicious.com
#Flash Player and Google’s #Chrome integration
March 30 2010, 4:20pm | Comments »
-
I posted to delicious.com
Nexus One Flash Player 10.1 demo app built with Flex 4 SDK, Catalyst, & Flash Builder : colrful
March 29 2010, 4:12pm | Comments »
-
I posted to delicious.com
Flash Platform Services: Social Service - InsideRIA
http://www.insideria.com/2010/03/flash-platform-services-social.html
- Tags:
- Flash
- RIA
- socialmedia
March 28 2010, 6:30am | Comments »
-
I posted to delicious.com
Early migrating your projects from Flex 3.x to Flex 4 (SDK) + FlexBuilder3 to FlashBuilder4 without many code changes
http://ria.arunkumarm.com/2010/03/early-migrating-your-projects-from-flex.html
March 27 2010, 11:15am | Comments »
-
I posted to i-create.org
404 Errors Hyped With PaperVision3d pt. 2
http://i-create.org/2010/02/07/404-errors-hyped-with-papervision3d-pt-2/
gotoandlearn.com, web designer magazine. I might modify this swf later to have youtube results and render them as planes. If you go to seacloud9.org and look for a page that you know is not on that web server it will serve up google results and display them in three dimensions randomly. This page is distracting on purpose but It was kind of fun to make. You can go to the page results by clicking on the sphere. You can move the viewport of the search results by moving the sliders. JavaScript to retrieve the url location and parse it:
var gResult; var gResultL; function getQueryString(){ var qString = [removed]; myReg = new RegExp("http://seacloud9.org/"); var url = qString.href.replace(myReg, ""); return url; }function googleResultArray(googleResult){ gResult = googleResult; } function getGoogleTitle(titleNum){ return gResult[titleNum]; }
ActionScript 3 Code behind for SWF all Google Search code and Debugging
package { import flash.display.*; import flash.events.*; import flash.events.Event; import flash.filters.BitmapFilterQuality; import flash.filters.BlurFilter; import fl.transitions.*; import flash.media.Sound; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.navigateToURL; import org.papervision3d.cameras.Camera3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import org.papervision3d.typography.Font3D; import org.papervision3d.typography.Text3D; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.materials.special.Letter3DMaterial; import org.papervision3d.typography.fonts.HelveticaBold; import org.papervision3d.materials.MovieMaterial; import org.papervision3d.materials.*; import org.papervision3d.events.InteractiveScene3DEvent; import hype.framework.core.TimeType; import hype.framework.rhythm.SimpleRhythm; import hype.framework.sound.SoundAnalyzer; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.shadematerials.CellMaterial; import flash.external.ExternalInterface; import be.boulevart.google.events.*; import be.boulevart.google.ajaxapi.search.web.*; import be.boulevart.google.ajaxapi.search.web.data.*; import be.boulevart.google.ajaxapi.search.*; public class e404 extends MovieClip { public var viewport:Viewport3D; public var scene:Scene3D; public var camera:Camera3D; public var viewport2:Viewport3D; public var scene2:Scene3D; public var camera2:Camera3D; public var plane:Plane; public var plane2:Plane; public var plane3:Plane; public var sphere:Sphere; public var font3d:Font3D; public var text3d:Text3D; public var fontMat:Letter3DMaterial; private var cell:CellMaterial; private var sphereArr:Array; public var light:PointLight3D; public var renderer:BasicRenderEngine; public var renderer2:BasicRenderEngine; public var googleTitle:Array = new Array(); public var googleLink:Array = new Array(); public var googleWebSearch:GoogleWebSearch=new GoogleWebSearch(); public var googURL:URLRequest; public function e404():void { addEventListener( Event.ENTER_FRAME, e404Go ); } private function onWebResults(e:GoogleSearchEvent):void { var resultObject:GoogleSearchResult=e.data as GoogleSearchResult; ExternalInterface.call( "console.log" ,"Estimated Number of Results: "+resultObject.estimatedNumResults); ExternalInterface.call( "console.log" ,"Current page index: "+resultObject.currentPageIndex); ExternalInterface.call( "console.log" ,"Number of pages: "+resultObject.numPages); for each (var result:GoogleWebItem in resultObject.results) { googleTitle.push(result.title); googURL = new URLRequest (result.url); googleLink.push(googURL); ExternalInterface.call( "console.log" ,"link:"+result.url+"title:"+result.title ); } ExternalInterface.call( "googleResultArray" , googleTitle ); //build 3d world now that we have our google search! init3D(); createSearch(); addEventListeners(); } private function onAPIError(evt:GoogleAPIErrorEvent):void { trace("An API error has occured: " + evt.responseDetails, "responseStatus was: " + evt.responseStatus); } public function e404Go(e:Event):void { removeEventListener(Event.ENTER_FRAME,e404Go ); // Create the container Sprite stage.scaleMode=StageScaleMode.NO_SCALE; stage.align=StageAlign.TOP_LEFT; //this javascript function returns the query string from the window location googleWebSearch.search(ExternalInterface.call( "getQueryString" ),0,"english"); googleWebSearch.addEventListener(GoogleAPIErrorEvent.API_ERROR,onAPIError); googleWebSearch.addEventListener(GoogleSearchEvent.WEB_SEARCH_RESULT,onWebResults); } private function init3D():void { // VIEWPORT viewport=new Viewport3D(0,0,true,false); viewport2=new Viewport3D(stage.width,stage.height,true,true); addChild( viewport ); addChild( viewport2 ); // // RENDERER renderer = new BasicRenderEngine(); renderer2 = new BasicRenderEngine(); // // SCENE scene = new Scene3D(); scene2 = new Scene3D(); // // CAMERA camera = new Camera3D(); camera.zoom=11; camera.focus=100; camera2 = new Camera3D(); camera2.zoom=11; camera2.focus=100; } private function createSearch():void { // Set some colors so we can see if loading is still happening, // or if it failed BitmapFileMaterial.LOADING_COLOR=0x000000; BitmapFileMaterial.ERROR_COLOR=0xFF0000; // var material:BitmapFileMaterial=new BitmapFileMaterial("404e.png"); material.doubleSided=true; var material2:BitmapFileMaterial=new BitmapFileMaterial("404e2.png"); material2.doubleSided=true; var material3:ColorMaterial=new ColorMaterial(0xFC0606,.3); material3.doubleSided=true; light=new PointLight3D(true); light.z=0; light.y=randomRange(-30,280); light.x=randomRange(-350,500); // plane=new Plane(material,300,100,10,10); plane.x=-350; plane.y=265; // Second ViewPort objects sphere and text from google sphereArr = new Array(); for (var i:int = 0; i < googleTitle.length; i++) { var myPattern:RegExp = /<b>/g; var myPattern2:RegExp = /<\/b>/g; var googSearch:String = new String(googleTitle[i].toString()); googSearch = googSearch.replace(myPattern, ""); googSearch = googSearch.replace(myPattern2, ""); sphere=new Sphere(buildCell(),randomRange(10,100),randomRange(5,20),10); sphere.x=randomRange(-500,500); sphere.y=randomRange(-500,500); sphere.z=randomRange(-500,500); try{ var colorPoolCell:Array = new Array(0x9F3F11, 0xFC0606, 0x9FC1BE, 0x787D29, 0xE0D4BA, 0x911F15, 0xBFCDF2, 0xF0EEF1); var colorID:int = randomRange(7, 0);
fontMat = new Letter3DMaterial(colorPoolCell[colorID]); font3d = new HelveticaBold(); text3d = new Text3D(googSearch, font3d, fontMat); text3d.x = sphere.x + googSearch.length + 10; text3d.y = sphere.y + 10; //text3d.z = sphere.z + 10; sphere.addChild(text3d); sphere.id = i; scene2.addChild( sphere ); sphereArr.push(sphere); } catch(e:Error){ // Sometimes the google title font3D will fail but we can catch it so it doesn't // have a nasty flash epic fail warning.. ExternalInterface.call( "console.log" , "Error Reached = " + e); } } //create the 3D planes for the first ViewPort plane2=new Plane(material2,300,100,10,10); plane2.x=-350; plane2.y=265; plane2.z=-60; plane3=new Plane(material3,800,150,10,10); plane3.x=-350; plane3.y=285; plane3.z=80; // scene.addChild( plane ); scene.addChild( plane2 ); scene.addChild( plane3 ); addListner(); } function addListner():void{ for(var i:int = 0; i < sphereArr.length; i++){ try{ sphereArr[i].addEventListener( InteractiveScene3DEvent.OBJECT_PRESS, callLink ); ExternalInterface.call( "console.log" , "Event Added" + i); }catch(e:Error){ ExternalInterface.call( "console.log" , e); } } } function callLink(e:InteractiveScene3DEvent):void { try { navigateToURL(googleLink[e.target.id], '_blank'); ExternalInterface.call( "console.log" , "link Clicked --" + e.target.id + "Link Called - " + googleLink[e.target.id]); } catch (err:Error) { ExternalInterface.call( "console.log" , err + " id: " + e.target.id + "Errored on: " + googleLink[e.target.id].toString() ); } } function buildCell():CellMaterial { var colorPoolCell:Array = new Array(0x9F3F11, 0xFC0606, 0x9FC1BE, 0x787D29, 0xE0D4BA, 0x911F15, 0xBFCDF2, 0xF0EEF1); var colorID:int = randomRange(7, 0); var colorID2:int = randomRange(7, 0); //random color material generation returns cellMaterial //cell=new CellMaterial(light,Math.round(Math.random()*0xFFFFFF),Math.round(Math.random()*0xFFFFFF),100); cell=new CellMaterial(light,colorPoolCell[colorID],colorPoolCell[colorID2],100); cell.interactive=true; return cell; } function randomRange(max:Number, min:Number = 0):Number { return Math.random() * (max - min) + min; } private function addEventListeners():void { addEventListener( Event.ENTER_FRAME, __onEnterFrame ); } private function removeEventListeners():void { removeEventListener( Event.ENTER_FRAME, __onEnterFrame ); } /*===================================================================\ ||Listener Functions || \===================================================================*/ private function __onEnterFrame( e:Event ):void { //moves the error planes viewort according to mouse position plane.rotationY=viewport.mouseX/4; plane.rotationX=viewport.mouseY/4; plane2.rotationY=viewport.mouseX/4; plane2.rotationX=viewport.mouseY/4; plane3.rotationY=viewport.mouseX/4; plane3.rotationX=viewport.mouseY/4; light.rotationX=viewport2.mouseY/4; light.rotationY=viewport2.mouseY/4; // sldWorld.addEventListener("change", updateWorldAxisValue); sldZoomCam.addEventListener("change", updateCamerValue); this.setChildIndex(sldWorld, this.numChildren-1); this.setChildIndex(sldZoomCam, this.numChildren-1); renderer.renderScene( scene, camera, viewport ); renderer2.renderScene( scene2, camera2, viewport2 ); } function updateWorldAxisValue(argument) { var sldWorld_value:Number=this.sldWorld.value; camera2.rotationY=sldWorld_value; } function updateCamerValue(argument) { var sldZoomCam_value:Number=this.sldZoomCam.value; camera2.zoom=sldZoomCam_value; } } }ActionScript3 Timeline Code for Sound Analysis and Image Effects
import hype.extended.behavior.FunctionTracker; import hype.extended.behavior.Oscillator; import hype.extended.color.ColorPool; import hype.extended.layout.GridLayout; import hype.framework.display.BitmapCanvas; import hype.framework.sound.SoundAnalyzer; import hype.extended.behavior.FixedVibration; var myWidth = stage.stageWidth; var myHeight = stage.stageHeight; var clipCanvas:BitmapCanvas = new BitmapCanvas(myWidth, myHeight); addChild(clipCanvas); var clipContainer:Sprite = new Sprite(); var soundAnalyzer:SoundAnalyzer = new SoundAnalyzer(); soundAnalyzer.start(); var colorPool:ColorPool = new ColorPool( 0x9F3F11, 0xFC0606, 0x9FC1BE, 0x787D29, 0xE0D4BA, 0x911F15, 0xBFCDF2, 0xF0EEF1 ); // xStart, yStart, xSpacing, ySpacing, columns var layout:GridLayout = new GridLayout(0, myHeight / 2, 10, 0, 34); var numItems:int = 64; var freq:int = 120; for (var i:uint = 0; i < numItems; ++i) { var clip:MySquare = new MySquare(); layout.applyLayout(clip); colorPool.colorChildren(clip); // object, property, soundAnalyzer.getFrequencyRange, [startRange, endRange, min, max] var aTracker:FunctionTracker = new FunctionTracker(clip.myFill, "alpha", soundAnalyzer.getFrequencyRange, [i4, i4+4, 0.25, 1.0]); var sTracker:FunctionTracker = new FunctionTracker(clip.myFill, "scaleY", soundAnalyzer.getFrequencyRange, [i4, i4+4, 0.5, 30.0]); aTracker.start(); sTracker.start(); // target Object, property, waveFunction, frequency, min, max, start value var yOsc:Oscillator = new Oscillator(clip, "y", Oscillator.sineWave, freq, 60, 600, i/(180/2));
yOsc.start(); clipContainer.addChild(clip); } clipCanvas.startCapture(clipContainer, true); var sound:Sound = new Sound(); sound.load(new URLRequest("http://i-create.org/actionscript/404e/shortCircuitE1.mp3")); sound.play(); var aVibration:FixedVibration = new FixedVibration(cBagHead, "alpha", 0.9, 0.1, 0.0, 1.0, false); aVibration.start();You find working examples of this 404 error page working at the following location: http://seacloud9.org/Context Free Art Web development will become much more complicated
- Tags:
- 3d
- ActionScript
- Flash
- i-create
- MashUp
- API
- javascript
- Experiment
- Adobe Flash
- Computer programming
February 7 2010, 12:14pm | Comments »


