Kullanıcıya Ait Cevapları Göster: lostchild (15)
Soru: prototype class
Soru: prototype class
Ne yazık ki sadece AS2’ ye yönelik olan çözüm hiç de yaratıcı değil.Ayrı bir sınıf yaratıp içine yazmak :))
class newMath
{
function isNatural(num:Number):Boolean
{
var isNotNegative:Boolean = ( number>=0)
var isInteger:Boolean = (number%1 == 0)
return isNotNegative && isInteger
}
}
aklımıza muhtemel olaarak gelecek olan diğer çözüm şu olabilirdi : yeni yarattığımız newMath adlı sınıfın, Math sınıfının metodlarını kullanabilmesi, yani şöyle :
class Math2 extends Math
{
// kod...
}
Fakat bu da ne yazık ki işe yaramamakta.diğer iki çözüm AS1 ile ilgili. ilki, "intrinsic" anahtar kelimesi sayesinde gerçekleşmekte. Elimizde bir AS1 sınıfı varsa ve onu AS2 sınıfı gibi kullanmak istiyorsak, ( aslında sınıf değil datatype tanımı olan ) bir sınıf yaratıp onun içine sadece data type ları yazıyoruz.
Flash zaten internal olarak halen AS1 sınıflarını kullanıyor ( ve bunu yapıyor ) Flash mx2004 ün kurulu olduğu klasör altında "Flash MX 2004\EN\First Run\Classes"klasörünü açıp Math.as dosyasına bakarsak şunu görürüz :
( Aslında core class ların hepsinde görüyoruz )
intrinsic class Math
{
static var E:Number;
static var LN10:Number;
static var LN2:Number;
static var LOG10E:Number;
static var LOG2E:Number;
static var PI:Number;
static var SQRT1_2:Number;
static var SQRT2:Number;
static function abs(value:Number):Number;
static function acos(value:Number):Number;
static function asin(value:Number):Number;
static function atan(value:Number):Number;
static function atan2(value1:Number,value2:Number):Number;
static function ceil(value:Number):Number;
static function cos(value:Number):Number;
static function exp(value:Number):Number;
static function floor(value:Number):Number;
static function log(value:Number):Number;
static function max(value1:Number,value2:Number):Number;
static function min(value1:Number,value2:Number):Number;
static function pow(value1:Number,value2:Number):Number;
static function random():Number;
static function round(value:Number):Number;
static function sin(value:Number):Number;
static function sqrt(value:Number):Number;
static function tan(value:Number):Number;
}
Burada yapılanı, "intrinsic" kullanarak biz de yapabiliriz.
/*
AS1 static method
Math nesnesi zaten var Flash da
flash dosyasında alttaki kod :
*/
Math.isNatural = function(num)
var isNotNegative = ( num >=0)
var isInteger = (num %1 == 0)
return isNotNegative && isInteger
}
// Math.as -> varolan AS2 sınıf dosyası
intrinsic class Math
{
/*
Diğer satırların altına
... aşağıdaki satır eklencek ...
*/
static function isNatural(num:Number):Boolean
}
Sonuncusu da benim böyle bir yol ararken bulduğum bir yöntem,ama normalde işlememesi gerekiyor, ama yine de işliyor (-: Niye işlediğini ben de merak ediyorum … !!
// AS1+AS2
var newMath = Math
// --->
newMath.isNatural = function(num)
var isNotNegative = ( num >=0)
var isInteger = (num %1 == 0)
return isNotNegative && isInteger
}
// test
trace (newMath.isNatural(7))
Tek tek denemeye vaktim olmadı. ( sanmıyorum ama .. )umarım çalışmayan bir şey olmaz…
"prototype" mevzusu ise şöyle sanırım : Macromedia nın yeni sürümlerini artık tümüyle yeni kod mimarisine göre yapılandırmak isteyeceği doğru olsa gerek ve normal bir yaklaşım ama AS’de de, JS gibi ECMA model alınıyor.
http://www.mozilla.org/js/language/es4
ECMA da halen "prototype" var. Bilgi için : http://www.mozilla.org/js/language/es4/core/definitions.html#prototype
Bir de şunu eklemek gerek AS2 sınıflarında halen prototype var, hatta ECMA da olmayan proto var. hatta constructor , constructor var ( son iki özelliği sınıf dosyalarında göremezsin ama internal olarak kullanılıyor ).
Bu koşullarda, yakın bir gelecekte ( bir sürüm sonra örneğin ) prototype ın çıkarılması bana çok da mümkün görünmüyor.Öncelikle macromedia için bu bir risk ( geriye yönelik uyumsuzluk ) Çünkü pozisyonları aynı olmasa da, halen Flash 3/4/5 ten kalma AS elemanları desteklenmekte.
Kaldı ki halen AS1 ile iş yapan bir çok kişi var. Baktığımızda AS1 halen çok daha esnek bir yapıda bu tür metodları özellikleri eklemek açısından. ( Bunun örneklerini yukarıda yapmaya çalıştığımız şeyden görebiliriz )
iyi çalışmalar …
Soru: Component preloading
Bu öneri çok basit olabilir, muhtemelen de düşünmüşsündür, ama : içinde, yüklenecek olan form application’ ı preload edecek bir swf yapılsa. yani :
bir swf yapıyoruz bu swf’ de leveln’ e veya boş bir klibe "form application" ı yüklüyoruz. nyüklemeyi de bu swf içinden yapıyoruz.
şu an bunu deneme şansım yok. o yüzden düşünmüşsen ya da işlemiyorsa ( ki işlemesi gerekir… ) kusura kalmayın artık (-:
iyi çalışmalar…
Soru: Component preloading
Şimdi, normalde komponentleri önyüklemek için kullandığımız yöntemi kullanabilir miyiz diye baktım. Olamıyor, çünkü ne yazık ki form ların kendileri birer component olarak görünmüyor flash içinde. Bu tabii ki ben mx2004 ile çok haşır neşir olamadığımdan dolayı bilmediğim bir şeydi.
Normal koşullarda komponetleri preload edebildiğimize göre bunları da aynı mantıkta ~ "export in 1st frame" i iptal ederek ve sınıfların export edildiği frame i 1’den farklı bir frame yaparak ~ becerebileceğimizi düşündüm.
Bu yüzden "belki yer" (-: diye şunu yaptım :
- publish settings den classes bölümünde "1’de değil 2’de export et" dedim. Buna itiraz etmedi ama, export ederken de, tabii ki bunu dedi :
WARNING:
The Export Frame for Classes specified in the Publish or Export settings,
frame 2, does not exist.
No bytecode for ActionScript 2.0 classes or interfaces was exported.
Yani Flash sanki bu fla 1 frame den oluşuyormuş gibi bir izlenim bırakıyor ( hani göya main screen de 1 frame var gibi ). Sonuçta bu bir swf olduğu için, düşündüm ki, aslında frame ler var ama flash, ortamda bize göstermiyor.
Ben de swf yi decompile ettim. koda baktığımda frame ler var.
Tek bir formun olduğu bir swf yi decompile ettiğimde 2 frame gördüm. Bu sebeplerden ötürü bir kaç screen daha ekleyerek görünen frame sayısının artıp artmadığını baktım. Artmıyor, yani gördüğüm kadarıyla ( yanılmıyorsak ) bir form application sanırım hep 2 frame den oluşuyor (_root ta ).
Sonuç olarak _root dendiğinde bu tabii ki bir "swf" olduğu için preload da yüklenme bitince "100%" görünüyor ama aradaki yüklenmeyi göremiyoruz. Problem tam olarak AS2 sınıflarının 1.frame de export edilmesini önleyememek.
Flash bunun için bize bir yol sunmamış.
Buradaki problemin flash ortamında yapılabilecek bir değişiklikle halledilebileceğini sanmıyorum. Şu yapılabilir,denenebilir :
Form.as ve Screen.as dosyalarından bu sınıflar incelenebilir, burada aslında birer MovieClip olan formlara nasıl referans verildiğine bakılabilir. Ve buna göre düşünülür taşınılır.
Bir diğeri de swf kodu üzerinde değişiklik yapıp onu yine swf ye çeviren bi program ile kodu değiştirmek Bu tabii ki biraz extrem bir çözüm
(-: Yapılabilecek olan şey de şu :
> SWF disassemble edilecek orada girişe bir empty frame konacak. oradan preload yapılacak ve böylece AS2sınıfları diğer frame e kaymış olacak.
Tabi bu bir deli işi olsa gerek çünkü normal bir swf değil uğraştığımız, ,bir form application sonuç olarak. Haliyle burada yapılacak bir değişiklik normal bir swf üzerinde yapılabilecek değişikliklerden çok farklı olacaktır muhtemelen.
Benim aklıma gelenler bunlar…
En azından problemin nereden kaynaklandığını tespit etmiş olduk sanırsam.
iyi çalışmalar…
Soru: Component preloading
bu bence,( sanırım )düşündüğün anlamda bir bug değil.
Çünkü, flash form application bir template ama, normal bir fla dan oluşturamıyoruz bu template i. Bu screen olayının halt yemesi (-:. Yapısal bir problem var. Bu ana screen, bir komponent mantığında timeline da yer almıyor. Orda görülen timeline, ana screen in timeline ı. Yani adamlar ne yazık ki bu konuda çuvallamışlar.. bunu nasıl giderecekler ben gerçekten çok merak ediyorum.
biraz kod deneyerek gördüm ki ana form _level0 da yer alıyor. Yani level mantığı var, ama flash bizden level0 ı, yani ana timeline ı saklıyor. problem de bu zaten ( böyle olmasaydı, ikinci bir frame yaratır, sınıfların preloader dan sonra yüklenmelerini sağlayabilirdik )
Fakat bahsettiğimiz yapıda, flash bizi "screen" adlı kutunun içine hapsetmiş. _parent a ulaşmak mümkün değil (authoring time da ).
var timeline = this
trace(timeline) // _level0.application
trace(typeof(timeline)) // movieclip
mx 2004 ü kaldırmak zorunda kaldım dün, ama sanırım aşağıdaki kodun sonucu "_level0" çıkmalı, düşündüklerim doğruysa :-
var mainTimeline = _parent
trace(mainTimeline) //_level0
iyi çalışmalar…
Soru: elektrik devresi tasarımı
Soru: Flash upload
Ben de bir ekleme yaparak ufak bir not düşmek istedim.
Bir sonraki flash player ( Maelstrom ) bir çok yeniliğin yeni sıra file upload ve download u mümkün kılıyor.
ilgili tanıtım videoları da vardı ama, sanırım bu pdf dosyası daha faydalı olacaktır kaynak olarak : http://www.macromedia.com/platform/whitepapers/platform_overview.pdf
iyi çalışmalar…
Soru: Flash upload
yeni flash player ımız çıktığına göre artık istediğinizi yapabilirsiniz … flash player 8 i yüklemeyi unutmayın tabi …
http://www.tink.ws/blog/flash8/FileReferenceExample.html
iyi çalışmalar…
Soru: e-learning, flashta sağtuş sürükleme
Bu istediğin muhtemelen yapılabilir, çünkü flash player da sağ klik olayı kullanılabiliyor, ama bir problem var. içerik eğer standalone flash player içerisinde görüntüleniyor ise, sağ klik yapıldığında flash a ait olan menünün görüntüleniyor olması. Bu da estetik ve kullanışlılık açısından pek hoş değil :D
Bir html içine gömülüyse JS ile sağ klik olayı flash player a gönderilebili ve muhtemelen drag de yaptırılabilir. Tam olarak durumu açıklarsan bir çözüm düşünmeye çalışırım. Yani swf tek başına mı çalışacak / bir browser da mı yoksa ayrı bir uygulamada mı ?
Soru: e-learning, flashta sağtuş sürükleme
ASnative adlı undocumented AS fonksiyonu ile bu yapılabiliyor. Yani actionscript ile sağ klik movie içerisinde algılanabilir ve kullanılabilir. Fakat undocumented olduğu için bu help de bulunmaz. Buna ek olarak middle click te aynı şekilde kullanılabiliyor. Bir örnek için bu post ta yaptığım örneğe bakın : http://www.macromediaturk.com/forum/viewtopic.php?p=33804#33804
Soru: e-learning, flashta sağtuş sürükleme
aslında var … browser içindeyken sağ klik olayı iptal edilir ..
ama bu bir event olduğu için de JS ile swf ye gönderilir. buna göre, mesela kendimize ait bir sağ klik menüsü gibi bir menü çıkartılabilir swf içinde. Context Menu ile varolan menüye zaten bişiler eklenip çıkartılabiliyor…
eğer swf bir exe içine embed ediliyorsa o zaman zaten bu menü direkt olarak iptal edilebililyor.
Soru: Flex tabanlı siteler
Flex 2.0 kullanan var mı arkadaşlar ? Bir bug sonucu, uzun bir gecikmenin ardından ancak başlayabildim :/
Soru: AIR ile swf çıktısı almak.
Bahsettiğin şey yapılabilir teorik olarak, çünkü AS3 ile basit swf çıktıları alınabiliyor… ByteArray kullanılıyor olmalı bunun için. Yani mümkündür.
Soru: Actionscript 3 için Uml Editor Varmı?
‘Violet UML’ adlı editörü buldum. Henüz denemeye vaktim olmadı :
http://selfmummy.com/vasgen/#code
Menüde-> File/Export To/Action Script3 seçeneği ile kod elde edilebiliyor…
Soru: Flex 3 Builder veya Flex 3 SDK çalışır mı ?
Çok teşekkür ederim… Ben sadece SDK’yı kullanıyorum. Komik de bir durum aslında. Bööle bakıp, java parametreleri felan, Eclipse de kullanmadığımdan, ‘cık cık cık ‘ demiştim. Ama jvm.config dosyasının başına:
-clean
yazdım ve çalıştı birden. Bir nevi, garson çatalı zeytine batırınca, ‘e tabi ben yordum zeytini’ diyen adam gibi hissettim kendimi. Son aylarda, kasılmadan yaptığım en temiz konfigürasyon oldu :D iyi çalışmalar…
Etkinlikler
Yarışma
Fikir10000 Dijital Pazarlama Fikir Yarışması
Fikir10000 Dijital Pazarlama Fikir Yarışması
ADTECH tarafından düzenlenen Fikir10000 yarışmasına; dijital pazarlama ile ilgili size ait olan fikrinizle katılabilir ve 10.000 YTL’lik birinci...
Kategori:
Yarışma
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 380 (1 kayıtlı, 379 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
Neler Yapılabilir?
Yeni bir portal, 30 civarında online / offline etkinlik, seminer vb rağmen MMIstanbul sanıyoruz ki halen hakettiği ilgiyi göremedi. " ...
500 Hatası Hakkında!
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)
Ne Nedir Kampanyası Başlıyor!
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız









AS1’ de yazılan prototype lar AS2 de kullanılabilir. Bu yüzden MovieClip için ayrıca class yaratmanıza gerek yok. Çünkü aslında,internal olarak hala AS1 e çevriliyor AS2 :
Söylediklerimizin işlemeyeceği durumlar var. Şöyle ki : AS2 deki sınıfları buradaki sorun açısından iki gruba ayırabiliriz :
* ( dinamik olmayan ) sınıflar
Bu sınıfın kendisine ( prototype ına değil) ve bu sınıfın örneği( instance ı) olan nesnelere yeni bir metod veya özellik ekleyemeyiz. output ta derleyici hatası verecektir (compile error)
* dinamik sınıflar
Bu sınıfın kendisine ve bu sınıfın örneği( instance ı) olan nesnelere yeni bir metod veya özellik ekleyebiliriz.
Tüm AS2 sınıflarının prototype larını kullanabilirsin. Kullanamayacağın durumlar :
Mesela AS2’ de Stage ve Math nesnelerine yeni metodları AS1 stilinde ekleyemezsin. Aslında öncelikle, bu iki sınıfa zaten prototype yazılmaz ( öyle denir ama…). Çünkü bunlar statik sınıftır, daha açık olarak söylenirse, bunları kullanmak için bunların instance larını oluşturmaz, direkt kullanırız. örnek olarak :
zaten basit çerçevede, mantık olarak ne Math ın ne de Stage in örneğini oluşturmanın bir anlamı yoktur. Misal olarak Stage bir tanedir o esnada ( o swf için ). Haliyle onun instance ını oluşturabiliyor olmak da manasız olurdu. Uzatmadan sadede gelirsek, AS2 deki internal sınıfların,("built-in" olarak tabir edilenler)bazıları dinamiktir, bazıları da dinamik değildir.işte Math ve Stage dinamik olmayan ve instance ları oluşturulmaayan sınıflardan, haliyle arıza çıkartıyorlar. Ama verdiğim örnekte de olduğu gibi MovieClip ve diğer sınıflar için prototype yazabilir ve AS2 de kullanabilirsin.Yani prototype a yeni metod ve özellikler ya da eventhandler lar eklemede sınıfın dinamik veya dinamik olmayışının bir önemi yok.
Hoşuma giden bir konu olduğu için uzattım sanırım. Eğer Math veya Stage gibi dinamik olmayan instance ı oluşturulmadan kullanılan sınıflara ( nesnelere) metod veya özellikleri nasıl ekleyebileceğini merak ediyorsan bunu da yazmaya çalışırım, çünkü bir kaç yolu var (biraz detaylı…)
iyi çalışmalar…