مطالب وبلاگ

پروژه منبع باز Appiconizer به زبان جاوا

قبلا در مطلبی به ارائه ابزار Appiconizer به صورت آنلاین پرداخته بودم.

اکنون بار دیگر نسخه بهینه تری از این برنامه را با زبان جاوا پیاده سازی کرده و به صورت open source در github قرار داده ام. کلیت ماجرا، این است که این ابزار، برای توسعه دهندگان پلتفرم های موبایل ساخته شده است.

appiconizer

یکی از مواردی که انجام آن در هر اپلیکیشن ضروری است، تهیه اندازه های مختلف آیکونهای مورد نیاز store است. با توجه به تعداد آیکونهای مورد نیاز مثلا در Appstore، که هر روز هم بیشتر میشوند، وجود ابزاری که این کار را به صورت خودکار انجام دهد، احساس میشود.

ضمنا جهت ساده تر شدن استفاده از این ابزار، اتصال Java Web Start هم تهیه و آپلود شده است. با استفاده از این تکنولوژی، به سادگی میتوانید ابزار مربوطه را از طریق وب اجرا کنید.

(ادامه مطلب…)


اصول برنامه نویس شئ‌گرا در Flash – قسمت پنجم

قبل از اینکه به صورت جدی، مبحث کلاس‌ها را شروع کنیم بهتر است با ذکر یک مثال، گذری بر مباحث و مفاهیم مربوط به کلاس‌ها داشته باشیم.

مثال زیر نمونه‌ای از کد کامل یک کلاس ساده و کوچک بوده که در یک فایل *.as تعریف شده و با import کردن آن در یک پروژه  Flashو تعریف یک شئ از نوع آن قابل استفاده است.

01:   package {
02:      import com.mshams.mhe1;
03:      import com.mshams.mutil;
04:      import flash.display.Sprite;
05:      import flash.events.Event;
06:   
07:      public class GraphicClass extends MovieClip {
08:         private var _id:Number;
09:         private var _name:String;
10:         public static var version:String = "V1.0";
11:   
12:         public function GraphicClass(yourname:String) {
13:            graphics.linestyle(1,0,1);
14:            trace("initialization");
15:            _name = yourname;
16:            addEventListener(Event.Enter_FRAME,evtEnterFrame);
17:         }
18:   
19:         private function evtEnterFrame(e:Event) {
20:            graphics.lineTo(Math.random() * 400,Math.random() * 400);
21:            printOut("line drawed");
22:         }
23:   
24:         private function printOut(s:String):void {
25:            trace("print text: " + s);
26:         }
27:      }
28:   }

در تعریف کلاس فوق، تقریباً از اکثر دستورات مربوط به برنامه‌نویسی شئ‌گرا استفاده شده است. اکنون به منظور آشنایی کلی با وظیفه این دستورات، خط به خط آنها را مورد بررسی قرار می‌دهیم:

–   دستور package (خط 1):

این دستور مشخص کننده نام دایرکتوری یا مسیری است که فایل *.as کلاس در آن قرار گرفته است. هدف از این دستور، دسته‌بندی کلاس‌های مختلف و جلوگیری از تداخل کار آنهاست.

هر بسته یا دایرکتوری می‌تواند شامل بینهایت کلاس باشد، در نتیجه معمولاً برای اینکه فایل‌های کلاس را با توجه به زمینه کاربرد آنها دسته‌بندی کنیم، هر مجموعه را در یک دایرکتوری جداگانه (و یا تودرتو و سلسله مراتبی) قرار داده و برای آدرس‌دهی به آنها از دستور package استفاده می‌نماییم.

به عنوان مثال در صورتی که فایل کلاس، در یک دایرکتوری با نام myclass قرار داشته و فایل فلش اصلی که قرار است از آن کلاس استفاده کند خارج از آن دایرکتوری باشد، باید از دستوری به شکلpackage myclass استفاده گردد.

–   دستورات import (خطوط 2 تا 5):

همان طور که از معنی این دستور مشخص است، وظیفه آن به نوعی با وارد کردن اطلاعات مرتبط است. پس از نوشتن یک کلاس، برای اینکه بتوانیم از شئ طراحی شده در آن، در کلاس‌های دیگر استفاده کنیم، باید کلاس مربوطه را import نماییم.

در حقیقت به منظور دسترسی به محتوای کلاس mhe1 (خط 2) و تعریف یک شئ از نوع آن کلاس، ابتدا باید آن را import کنیم. شیوه آدرس‌دهی در این دستور به این صورت است که ابتدا نام package و مسیر در برگیرنده کلاس ذکر شده (و با نقطه از هم جدا می‌شوند) و سپس نام کلاس درج می‌گردد.

در نتیجه دستوری که برای ورود کلاس mhe1 نوشته شده، به این معنی است که کلاس mhe1 در دایرکتوری (یا package) mshams قرار داشته که خود آن نیز در دایرکتوری دیگری به نام com واقع شده است.

(ادامه مطلب…)


پروژه منبع باز Google Batch Image Downloader

برای اکثر برنامه نویسها، استفاده از موتور جستجوی گوگل به عنوان منبع دریافت تصاویر یک کار عادی و معمول، محسوب میشود. دریافت انواع لوگو و آیکون، تصاویر png، انیمیشن های مختلف، تصویر چهره، header و footer و غیره، همه جز تصاویری هستند که به صورت مکرر مورد نیاز برنامه نویسها خواهند بود.

البته نمیتوان این مورد را نادیده گرفت که دریافت و ذخیره تصاویر به تعداد زیاد، فرآیندی سخت و زمانبر دارد. به همین دلیل وجود ابزاری که این کار را به صورت خودکار انجام دهد، ارزشمند است.

به همین دلیل بنده ابزاری را طراحی کردم که با مشخص نمودن ویژگی های تصاویر مورد نیاز، مطابق با Advanced Image Search در خود Google Image، آنها را دریافت و ذخیره نماید.

روش کار بسیار ساده است، فقط مشخصات عکس و کلمات کلیدی را و تعداد تصاویر مورد نیاز را وارد کنید، بقیه کارها به صورت خودکار انجام میشود.

(ادامه مطلب…)


اصول برنامه نویس شئ‌گرا در Flash – قسمت چهارم

حوزه عملکرد یک خصیصه یا تابع درون کلاس ممکن است یکی از موارد زیر باشد.

Private : فقط از درون خود کلاس قابل دسترس باشد.

Public : از خارج از کلاس هم مورد دسترس باشد.

Protected : فقط از درون خود کلاس و یا کلاس‌های فرزند آن قابل دسترس باشد.

Internal : از درون تمام کلاس‌های موجود در آن بسته مورد دسترس باشد.

تعریف صفات و توابع درون کلاس‌ها، تفاوتی با تعریف متغیرها و توابع عادی نداشته و فقط ذکر نام حوزه عملکرد به آن اضافه می‌شود.

 

مثال 1: کلاسی برای ترسیم خطوط تصادفی.

package {
    import flash.display.Sprite;
    import flash.events.Event;
    
    public class ExampleApplication extends Sprite {
        
        public function ExampleApplication(  ) {
            graphics.lineStyle(1, 0, 1);
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
        private function onEnterFrame(event:Event):void {
            graphics.lineTo(Math.random(  ) * 400, Math.random(  ) * 400);
        }
    }
}

مثال 2: تعریف یک تابع برای دریافت مقدار صفت خصوصی id.

package {
    public class Example {
        private var _id:String;
        public function getId(  ):String {
            return _id;
        }
    }
}

اصول برنامه نویس شئ‌گرا در Flash – قسمت سوم

پس از تعریف کلاس Car، تنها کاری که باید برای استفاده از آن انجام داد این است که شئ جدیدی از نوع کلاس Car تعریف گردد. برای تعریف یک شئ جدید از یک کلاس، از تعریف متغیر و دستور new استفاده می‌گردد.

مثال: تعریف اشیاء جدید.

var myObj : Object = new  Object ( );
var myArray1 : Array = new  Array ( );
var myArray2 : Array = new Array("item1", "item2", "item3");
var clip1 : MovieClip= new  MovieClip ( );
var car1 : Car = new  Car  ( );

 

اصطلاحاً به متغیرهایی که از نوع یک کلاس تعریف می‌گردند، یک ” شئ” اتلاق می‌گردد. زبان AS3 یک زبان برنامه‌نویسی کاملاً شئ‌گراست. اکثر اشیائی که ممکن است در برنامه‌نویسی با AS3 مورد نیاز باشند، از قبل طراحی شده و به صورت آماده در کتابخانه‌های AS3 قرار گرفته‌اند.

البته در کنار این اشیاء، امکان تعریف کلاس‌های کاملاً جدید یا کلاس‌های مشتق شده از کلاس‌های پیش‌فرض نیز وجود دارد. از مجموعه کلاس‌های مهم و پرکاربرد AS3 می‌توان به موارد زیر اشاره نمود:

  • Object:     کلاس پایه تمام اشیاء موجود در AS3
  • Number:     اعداد
  • String:     رشته‌های متنی
  • Array:     آرایه یا لیستی از انواع داده‌ها بدون نیاز به تعریف نوع آنها
  • Vector:     آرایه‌ای از داده‌های هم نوع (سرعت کار با Vector بیشتر از Array می‌باشد)
  • ByteArray:     آرایه‌ای از داده‌های باینری
  • Sprite:     یک شئ بصری ساده که فاقد Timeline است
  • MovieClip:     یک شئ بصری از نوع کلیپ انیمیشنی که دارای Timeline می‌باشد
  • Bitmap:     شئ بصری غیر انیمیشنی نقشه بیتی
  • Shape:     شئ بصری غیر انیمیشنی ترسیمی
  • TextField:     کنترل بصری دریافت و نمایش متن
  • SimpleButton:     یک دکمه ساده
  • Date:     کلاس کار با تاریخ
  • Error:     حاوی کلیه دستورات مربوط به خطا و استثناء
  • Function:     کلاس پایه تمام توابع تعریف شده در فلش
  • Sound:     حاوی دستورات کار با اصوات
  • Video:     حاوی دستورات کار با ویدئو
  • RegExp:     کار با عبارات با قاعده
  • Tween:     تولید انیمیشن‌ها و حرکات ساده دو بعدی
  • Timer:     زمانبندی اجرای دستورات
  • Transform:     کار با جلوه‌های بصری MovieClip
  • Transition:     کار با جلوه‌های نمایشی ساده
  • Mouse:     کنترل وقایع مربوط به ماوس
  • Keyboard:     کنترل وقایع مربوط به صفحه کلید
  • PrintJob:     کار با دستگاه چاپگر
  • XML:     کار با فایل‌های داده‌ای xml
  • Loader:     بارگذاری فایل‌های خارجی به درون انیمیشن در زمان اجرا
  • DisplayObject:     کلاس پایه تمام اشیاء بصری در ActionScript 3


  • آرشیو:

  • .
    Copyright (c) 2010 www.mshams.ir