亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bitmapfilematerial.as

?? flash 360全景瀏覽
?? AS
字號:
/*
 *  PAPER    ON   ERVIS  NPAPER ISION  PE  IS ON  PERVI IO  APER  SI  PA
 *  AP  VI  ONPA  RV  IO PA     SI  PA ER  SI NP PE     ON AP  VI ION AP
 *  PERVI  ON  PE VISIO  APER   IONPA  RV  IO PA  RVIS  NP PE  IS ONPAPE
 *  ER     NPAPER IS     PE     ON  PE  ISIO  AP     IO PA ER  SI NP PER
 *  RV     PA  RV SI     ERVISI NP  ER   IO   PE VISIO  AP  VISI  PA  RV3D
 *  ______________________________________________________________________
 *  papervision3d.org ? blog.papervision3d.org ? osflash.org/papervision3d
 */

/*
 * Copyright 2006-2007 (c) Carlos Ulloa Matesanz, noventaynueve.com.
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 */

//  ______________________________________________________________________ BITMAP FILE MATERIAL

package org.papervision3d.materials
	{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Graphics;
	import flash.display.Loader;
	import flash.events.*;
	import flash.geom.Matrix;
	import flash.net.URLRequest;
	import flash.utils.Dictionary;
	
	import org.papervision3d.Papervision3D;
	import org.papervision3d.core.geom.renderables.Triangle3D;
	import org.papervision3d.core.proto.MaterialObject3D;
	import org.papervision3d.core.render.data.RenderSessionData;
	import org.papervision3d.core.render.draw.ITriangleDrawer;
	import org.papervision3d.events.FileLoadEvent;

	/**
	* The BitmapFileMaterial class creates a texture by loading a bitmap from an external file.
	*
	* Materials collect data about how objects appear when rendered.
	*/
	public class BitmapFileMaterial extends BitmapMaterial implements ITriangleDrawer
	{
		// ___________________________________________________________________ PUBLIC

		/**
		* The URL that has been requested.
		*/
		public var url :String = "";

		/**
		* Whether or not the texture has been loaded.
		*/
		public var loaded :Boolean;

		/**
		* Function to call when the last image has loaded.
		*/
		static public var callback :Function;

		/**
		* The color to use in materials before loading has finished.
		*/
		static public var LOADING_COLOR :int = MaterialObject3D.DEFAULT_COLOR;
		
		/**
		 * The color to use for the lines when there is an error.
		 */
		static public var ERROR_COLOR:int = MaterialObject3D.DEBUG_COLOR;
		
		/**
		* A texture object.
		*/		
		override public function get texture():Object
		{
			return this._texture;
		}
		/**
		* @private
		*/
		override public function set texture( asset:Object ):void
		{
			if( asset is String == false )
			{
				Papervision3D.log("Error: BitmapFileMaterial.texture requires a String for the texture");
				return;
			}
			
			bitmap   = createBitmapFromURL( String(asset) );
			_texture = asset;
		}
		
		/**
		 * Internal
		 * 
		 * Used to define if the loading had failed.
		 */
		private var errorLoading:Boolean = false;

		// ___________________________________________________________________ NEW

		/**
		* The BitmapFileMaterial class creates a texture by loading a bitmap from an external file.
		*
		* @param	url					The URL of the requested bitmap file.
		* @param	initObject			[optional] - An object that contains additional properties with which to populate the newly created material.
		*/
		public function BitmapFileMaterial( url :String="" )
		{
			// save URL reference
			this.url = url;

			// set the loaded flag
			this.loaded = false;

			// Loading color
			this.fillAlpha = 1;
			this.fillColor = LOADING_COLOR;
			
			// start the loading by setting the texture
			if( url.length > 0 ) texture = url;
		}

		// ___________________________________________________________________ CREATE BITMAP

		/**
		* [internal-use]
		*
		* @param	asset
		* @return
		*/
		protected function createBitmapFromURL( asset:String ):BitmapData
		{
			// Empy string?
			if( asset == "" )
			{
				return null;
			}
			// Already loaded?
			else if( _loadedBitmaps[ asset ] )
			{
				var bmp:BitmapData = _loadedBitmaps[ asset ];

				bitmap = super.createBitmap( bmp );

				this.loadComplete();

				return bmp;
			}
			else
			{
				queueBitmap( asset );
			}
		
			return null;
		}

		// ___________________________________________________________________ QUEUE BITMAP

		private function queueBitmap( file:String ):void
		{
			// New filename?
			if( ! _subscribedMaterials[ file ] )
			{
				// Queue file
				_waitingBitmaps.push( file );

				// Init subscription
				_subscribedMaterials[ file ] = new Array();
			}

			// Subscribe material
			_subscribedMaterials[ file ].push( this );
			
			// Launch loading if needed
			if( _loadingIdle )
				loadNextBitmap();
		}

		// ___________________________________________________________________ LOAD NEXT BITMAP

		private function loadNextBitmap():void
		{
			// Retrieve next filename in queue
			var file:String = _waitingBitmaps[0];

			var request:URLRequest = new URLRequest( file );
			var bitmapLoader:Loader = new Loader();
			
			bitmapLoader.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS, loadBitmapProgressHandler );
			bitmapLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, loadBitmapCompleteHandler );
			bitmapLoader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, loadBitmapErrorHandler );
			
			try
			{
				// Load bitmap
				bitmapLoader.load( request );

				// Save original url
				_loaderUrls[ bitmapLoader ] = file;

				// Busy loading
				_loadingIdle = false;

				Papervision3D.log( "BitmapFileMaterial: Loading bitmap from " + file );
			}
			catch( error:Error )
			{
				// Remove from queue
				_waitingBitmaps.shift();

				// Loading finished
				_loadingIdle = true;

				Papervision3D.log( "[ERROR] BitmapFileMaterial: Unable to load file " + error.message );
			}
		}
		
		// ___________________________________________________________________ LOAD BITMAP ERROR HANDLER

		private function loadBitmapErrorHandler( e:IOErrorEvent ):void
		{
			
			var failedAsset:String = String(_waitingBitmaps.shift());
			// force the IOErrorEvent to trigger on any reload.
			// ie: no reload on retry if we don't clear these 2 statics below.
			_loadedBitmaps[failedAsset] = null;
			_subscribedMaterials[failedAsset] = null;
			
			this.errorLoading = true;
			this.lineColor = ERROR_COLOR;
			this.lineAlpha = 1;
			this.lineThickness = 1;
			
			// Queue finished?
			if( _waitingBitmaps.length > 0 )
			{
				// Continue loading
				loadNextBitmap();
			}
			else
			{
				// Loading finished
				_loadingIdle = true;
				
				if( Boolean( callback ) ) callback();
			}
						
			var event:FileLoadEvent = new FileLoadEvent(FileLoadEvent.LOAD_ERROR, failedAsset, -1, -1, e.text);
			
			dispatchEvent(event);
		}
		
		// ___________________________________________________________________ LOAD BITMAP PROGRESS HANDLER

		private function loadBitmapProgressHandler( e:ProgressEvent ):void
		{
			var progressEvent:FileLoadEvent = new FileLoadEvent( FileLoadEvent.LOAD_PROGRESS, url, e.bytesLoaded, e.bytesTotal);
			dispatchEvent( progressEvent );
		}

		// ___________________________________________________________________ LOAD BITMAP COMPLETE HANDLER

		private function loadBitmapCompleteHandler( e:Event ):void
		{
			var loader:Loader = Loader( e.target.loader );
			var loadedBitmap:Bitmap = Bitmap( loader.content );

			// Retrieve original url
			var url:String = _loaderUrls[ loader ];

			// Retrieve loaded bitmapdata
			var bmp:BitmapData = super.createBitmap( loadedBitmap.bitmapData );
				
			// Update subscribed materials
			for each( var material:BitmapFileMaterial in _subscribedMaterials[ url ] )
			{
				material.bitmap = bmp;
				material.maxU = this.maxU;
				material.maxV = this.maxV;
				material.resetMapping();
				material.loadComplete();
			}

			// Include in library
			_loadedBitmaps[ url ] = bmp;

			// Remove from queue
			_waitingBitmaps.shift();

			// Queue finished?
			if( _waitingBitmaps.length > 0 )
			{
				// Continue loading
				loadNextBitmap();
			}
			else
			{
				// Loading finished
				_loadingIdle = true;
				
				if( Boolean( callback ) ) callback();
			}
		}

		// ___________________________________________________________________ LOAD COMPLETE

		private function loadComplete():void
		{
			this.fillAlpha = 0;
			this.fillColor = 0;
			this.loaded = true;

			// Dispatch event
			var fileEvent:FileLoadEvent = new FileLoadEvent( FileLoadEvent.LOAD_COMPLETE, this.url );
			this.dispatchEvent( fileEvent );
		}
		
		/**
		 *  drawFace3D
		 */
		override public function drawTriangle(face3D:Triangle3D, graphics:Graphics, renderSessionData:RenderSessionData, altBitmap:BitmapData = null, altUV:Matrix = null):void
		{
			if (bitmap == null || errorLoading)
			{
				if(errorLoading){
					graphics.lineStyle(lineThickness,lineColor,lineAlpha);
				}
				
				graphics.beginFill( fillColor, fillAlpha );
				graphics.moveTo( face3D.v0.vertex3DInstance.x, face3D.v0.vertex3DInstance.y );
				graphics.lineTo( face3D.v1.vertex3DInstance.x, face3D.v1.vertex3DInstance.y );
				graphics.lineTo( face3D.v2.vertex3DInstance.x, face3D.v2.vertex3DInstance.y );
				graphics.lineTo( face3D.v0.vertex3DInstance.x, face3D.v0.vertex3DInstance.y );
				graphics.endFill();
				
				if(errorLoading){
					graphics.lineStyle();
				}
				
				renderSessionData.renderStatistics.triangles++;
			}
			
			super.drawTriangle(face3D, graphics, renderSessionData);
		}
		
		override protected function destroy():void
		{
			super.destroy();
			bitmap.dispose();
		}
		


		// ___________________________________________________________________ PRIVATE

		// Filenames in the queue
		static private var _waitingBitmaps :Array = new Array();

		// URLs per loader
		static private var _loaderUrls :Dictionary = new Dictionary();

		// Loaded bitmap library
		static private var _loadedBitmaps :Object = new Object();

		// Materials subscribed  to the loading queue
		static private var _subscribedMaterials :Object = new Object();

		// Loading status
		static private var _loadingIdle :Boolean = true;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最近中文字幕一区二区三区| 欧美高清精品3d| 国产清纯白嫩初高生在线观看91| 麻豆成人91精品二区三区| 欧美另类久久久品| 肉肉av福利一精品导航| 日韩三级电影网址| 国产综合色产在线精品| 国产偷v国产偷v亚洲高清| 高清不卡一区二区在线| 国产精品久久久99| 在线视频中文字幕一区二区| 亚洲国产你懂的| 欧美一级免费大片| 国产精一品亚洲二区在线视频| 欧美极品xxx| 91福利社在线观看| 裸体健美xxxx欧美裸体表演| 国产精品美女一区二区在线观看| 91一区二区在线| 亚洲第一搞黄网站| 26uuu亚洲综合色欧美| aaa亚洲精品| 亚洲bt欧美bt精品| 国产日韩亚洲欧美综合| 色婷婷综合五月| 手机精品视频在线观看| 国产日本欧洲亚洲| 欧美亚洲禁片免费| 国产一区二区在线电影| 一区二区三区中文字幕电影| 欧美一区二区三区播放老司机| 国产精品综合av一区二区国产馆| 亚洲欧洲综合另类在线| 日韩免费观看高清完整版| 91亚洲午夜精品久久久久久| 美女视频第一区二区三区免费观看网站| 久久久久国产精品人| 色综合天天综合网国产成人综合天 | 一区二区三区四区视频精品免费| 欧美日韩国产小视频| 国产不卡视频一区| 偷拍日韩校园综合在线| 国产精品伦理在线| 日韩精品一区二区三区swag| av电影天堂一区二区在线观看| 免费人成精品欧美精品| 亚洲免费看黄网站| 久久久亚洲国产美女国产盗摄 | 欧美日韩一区视频| 国产成人精品一区二区三区网站观看| 一区二区三区视频在线观看| 欧美—级在线免费片| 日韩女优毛片在线| 欧美色图在线观看| 91网站最新地址| 国产成a人亚洲精| 六月婷婷色综合| 五月天婷婷综合| 亚洲乱码国产乱码精品精98午夜 | 91精品在线麻豆| 91黄色免费版| 99久久久国产精品免费蜜臀| 国产成a人亚洲| 久久精品国产99国产精品| 亚洲不卡在线观看| 亚洲伊人伊色伊影伊综合网| 中文字幕日本不卡| 久久精品人人做人人爽人人| 日韩女优毛片在线| 日韩欧美三级在线| 欧美一区二区三区四区五区| 欧美视频日韩视频| 欧美影院精品一区| 91成人免费在线视频| 日本福利一区二区| 在线视频一区二区免费| 91免费在线视频观看| av欧美精品.com| 97精品电影院| 成人美女在线观看| 99re8在线精品视频免费播放| 成人在线视频一区| 久草热8精品视频在线观看| 亚洲综合色在线| 午夜免费久久看| 日韩黄色在线观看| 看电影不卡的网站| 国产成人综合在线| 成人av免费网站| 99久久精品免费看| 91麻豆文化传媒在线观看| 成人不卡免费av| 色呦呦一区二区三区| 欧美三级在线播放| 欧美一区日本一区韩国一区| 欧美不卡视频一区| 久久精品亚洲一区二区三区浴池| 国产女同性恋一区二区| 一区在线观看视频| 亚洲大型综合色站| 激情综合色综合久久| 丰满亚洲少妇av| 色婷婷av一区二区三区之一色屋| 色婷婷av一区二区三区软件| 欧美日韩一区中文字幕| 宅男在线国产精品| 久久精品人人做| 亚洲免费毛片网站| 美女mm1313爽爽久久久蜜臀| 国产成人在线观看免费网站| 一本大道久久a久久精二百| 欧美视频一区在线观看| 欧美精品一区二区三区很污很色的| 国产精品色在线观看| 亚洲国产wwwccc36天堂| 精品一区二区免费在线观看| 白白色亚洲国产精品| 欧美三区在线视频| 久久久精品国产免费观看同学| 亚洲天堂成人网| 蜜臀久久久久久久| 成人动漫中文字幕| 欧美一区二区三区啪啪| 亚洲欧洲精品一区二区三区 | 99免费精品视频| 欧美一卡2卡3卡4卡| 久久久久久夜精品精品免费| 一区二区激情小说| 国产精品一区二区无线| 在线精品视频一区二区| 久久久久亚洲蜜桃| 日本视频免费一区| 色综合天天综合网国产成人综合天 | 洋洋成人永久网站入口| 韩国欧美国产一区| 欧美日韩不卡一区| 国产精品美日韩| 精品一区二区av| 欧美日韩激情一区二区三区| 亚洲国产岛国毛片在线| 美女网站一区二区| 欧美丝袜丝交足nylons图片| 国产日韩精品视频一区| 麻豆国产精品一区二区三区| 日本精品视频一区二区三区| 久久久久久**毛片大全| 麻豆精品视频在线| 911精品产国品一二三产区| 亚洲美女区一区| 成人黄色片在线观看| 久久一区二区三区国产精品| 日本成人中文字幕在线视频| 在线观看三级视频欧美| 国产精品不卡一区| 国产高清亚洲一区| 久久综合99re88久久爱| 免费在线看成人av| 欧美男女性生活在线直播观看| 亚洲同性同志一二三专区| 国产99久久久国产精品潘金网站| 日韩免费视频一区二区| 美国十次综合导航| 91麻豆精品91久久久久久清纯| 夜夜嗨av一区二区三区| 在线观看国产一区二区| 亚洲欧美aⅴ...| 91理论电影在线观看| 中文字幕一区二区三区四区不卡| 成人免费毛片aaaaa**| 国产精品国产三级国产aⅴ中文| 国产成人免费av在线| 国产偷国产偷精品高清尤物| 国产精品一级在线| 久久久久久99久久久精品网站| 国产一区二区三区久久久| wwww国产精品欧美| 成人在线视频一区| 亚洲男女毛片无遮挡| 日本乱人伦一区| 亚洲一卡二卡三卡四卡无卡久久 | 国产午夜亚洲精品羞羞网站| 福利视频网站一区二区三区| 国产女人aaa级久久久级| 成人av电影在线| 一区二区三区在线视频观看| 欧美午夜精品电影| 日本欧美在线看| 久久久久成人黄色影片| a美女胸又www黄视频久久| 一区二区三区不卡视频| 日韩三级精品电影久久久| 国产在线视视频有精品| 中文字幕高清一区| 91国产福利在线| 久久国产精品一区二区| 中文一区二区在线观看| 在线视频你懂得一区| 日韩不卡免费视频| 国产人久久人人人人爽|