عکس گرفتن از تمام قسمتهای یک آبجکت

Dr.Ezraeel

Member
سلام

یک آبجکت به نام container دارم که میخواهم تو 10 قسمت مساوی برش بدم و 10 تا عکس از قسمتهای مختلف خروجی (عکس) بگیرم . مشکلی که دارم اینه که دارم با کلاس bitmap کار میکنم و آبجکت container بزرگه! یعنی مثلا فقط نصف گرافیک تو صفحه فلش پلیر قابل دیدنه و برای دیدن بقیه گرافیک باید scroll شود تا دیده شود پس وقتی که خروجی عکس رو می گیرم تنها از قسمت هایی عکس میگیره که تو فلش پلیر جلوی چشم هستند.
چه کار کنم که از کل بتونم عکس بندازم ؟
 
آخرین ویرایش:

Fanous

Well-Known Member
سلام

عرض container رو به عرض استیج تقسیم کنید ، عدد بدست اومده رو به سمت بالا گرد کنین , عدد نهایی رو توی یک متغیر ذخیره کنین ( مثلا n )
با یک حلقه for , به تعداد n بار ، container رو جابجا کنین و مختصات x اون رو جابجا کنین و کدهای مربوط به عکس گرفتن رو اجرا کنین
اگر در جهت y هم نیاز به این کار باشه با 2 حلقه for تو در تو باید کار کنین
 

Fanous

Well-Known Member
خب کدهای شمارو که ندیدیم
من یک نمونه واستون ضمیمه می کنم ، شاید مفید باشه
توی فایل ضمیمه با اینکه ابعاد تصویر از ابعاد استیج بزرگتره ، ولی مشکلی پیش نمیاد

PHP:
import com.greensock.*;
import com.greensock.easing.*;

const COLUMNS:uint = 5;
const ROWS:uint = 5;

var imagesGrid : Array = new Array();

var imageLoader:Loader = new Loader();
imageLoader.load(new URLRequest("image.jpg"));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);

function onImageLoaded(e:Event):void
{

	var originalBitmapData:BitmapData = e.target.content.bitmapData;

	var imageWidth:Number = originalBitmapData.width / COLUMNS;
	var imageHeight:Number = originalBitmapData.height / ROWS;

	for (var i = 0; i < ROWS; i++)
	{

		for (var j = 0; j < COLUMNS; j++)
		{

			var imageHolder:MovieClip = new MovieClip();

			var image:Bitmap = new Bitmap();
			image.bitmapData = new BitmapData(imageWidth,imageHeight);
			image.bitmapData.copyPixels(
			originalBitmapData,
			  new Rectangle(j * imageWidth, i * imageHeight,imageWidth, imageHeight),
			  new Point(0,0));

			imageHolder.addChild(image);

			imageHolder.x = j * imageWidth;
			imageHolder.y = i * imageHeight;

			imageHolder.alpha = 0;

			imagesGrid.push(imageHolder);
			addChild(imageHolder);

		}
	}
	revealImage();
}

function revealImage():void
{
	for (var i:int = 0; i <imagesGrid.length; i++)
	{
		var imageGrid:MovieClip = imagesGrid[i] as MovieClip;
		imageGrid.alpha = 1;
		TweenLite.from(imageGrid,.8,{alpha:0,y:-200,delay:i*.1,ease:Back.easeOut});
	}
}
 

پیوست ها

  • slice_image.rar
    229.8 کیلوبایت · بازدیدها: 13
آخرین ویرایش:

Dr.Ezraeel

Member
ضمن اینکه زحمت کشیدید ، تو خروجی یعنی فرمت PNG یا JPEG مشکل دارم. این فایلی که شما گذاشتید برای داخل خود swf هست که مشکلی ایجاد نمیکنه
 

Fanous

Well-Known Member
ضمن اینکه زحمت کشیدید ، تو خروجی یعنی فرمت PNG یا JPEG مشکل دارم. این فایلی که شما گذاشتید برای داخل خود swf هست که مشکلی ایجاد نمیکنه

خب ما الان قطعات تصویرمون رو توی آرایه imagesGrid داریم
کافیه با یک حلقه for اونهارو یکی یکی و با نام های متفاوت ذخیره کنیم
از چه کدهایی برای ذخیره کردن استفاده می کنین؟

شاید این آدرس بتونه کمک کنه :
http://stackoverflow.com/questions/24843663/as3-pngencoder-error
 
آخرین ویرایش:

Dr.Ezraeel

Member
حل شد! به خاطر وجود container.scrollrect این اجازه رو نمیداد که خارج از محدوده scrollrect رو عکس بگیرم!
 

جدیدترین ارسال ها

بالا