ഫ്ലാഷിലെ മൂവി ലോഡിംഗ്
ധാരാളം ചിത്രങ്ങളും, വീഡിയോകളും, പേജുകളുമുള്ള ഒരു ഫ്ലാഷ് പ്രോജക്ട് സങ്കല്പിക്കുക. അതൊരു വെബ് സൈറ്റോ, ഇന്ററാക്ടീവ് സി.ഡി.യോ, എന്തും ആയിക്കൊള്ളട്ടെ. ഇവയെല്ലാം കൂടി ഒരൊറ്റ ഫ്ലാഷ് ഫയലാക്കി എക്സ്പോര്ട്ട് ചെയ്താല്, ആ ഒരു ഫയല് റണ് ചെയ്യുമ്പോള് തന്നെ, അപ്പോള് ആവശ്യമുള്ളതും ഇല്ലാത്തതുമായ എല്ലാ കണ്ടന്റും മെമ്മറിയില് ലോഡ് ചെയ്യപ്പെടും. വെബ്ബിലാണെങ്കില്, ആ ഒരു ഫയല് ലോഡ് ചെയ്യുവാന് തന്നെ ധാരാളം സമയം ആവശ്യമായി വരുകയും ചെയ്യും. ഈ ബുദ്ധിമുട്ടുകള് ഒഴിവാക്കുവാനുള്ള ഏറ്റവും ലളിതമായ മാര്ഗം, ആ ഫ്ലാഷ് ഫയലിനെ പലതായി ഭാഗിക്കുക എന്നുള്ളതാണ്. അതായത് മുഴുവന് പ്രോജക്ടിനേയും പല മൊഡ്യൂളുകളായി തിരിച്ച്, ഓരോ സമയത്തും ആവശ്യമുള്ള മൊഡ്യൂള് മാത്രമായി ലോഡ് ചെയ്യുക. ഇന്ബില്റ്റ് ഫംഗ്ഷനുകളായ loadMovie(), loadMovieNum()
എന്നിവയാണ് ഈ രീതിയില് ഫ്ലാഷില് ഒരു പ്രോജക്ട് ചെയ്യുവാനായി പ്രയോജനപ്പെടുത്താവുന്നത്.
ആദ്യമായി ഒരു പുതിയ ഫയല് തുറന്ന് (400 പിക്സല് വീതിയും, 200 പിക്സല് പൊക്കവുമുള്ള ഒരു ഫയലാണ് ഇവിടെ ഉപയോഗിച്ചിരിക്കുന്നത്.) അവിടെ മുകളിലെ ചിത്രത്തില് കാണുന്ന രീതിയില് ഒരു ബാക്ക്ഗ്രൌണ്ട് വരയ്ക്കുക. Main.fla എന്ന പേരില് നമുക്കിതിനെ സേവ് ചെയ്യാം.
മറ്റൊരു പുതിയ ഫയല് തുറന്ന് (150 പിക്സല് വീതിയും പൊക്കവും) അവിടെ ചിത്രത്തില് കാണുന്ന രീതിയില് ലോഡ് ചെയ്യുവാനുള്ള ഒരു ചിത്രം വരയ്ക്കുക. നമുക്കിതിനെ Sub.fla എന്ന പേരില് സേവ് ചെയ്യാം. രണ്ട് ഫയലിന്റേയും പബ്ലിഷ് സെറ്റിംഗുകളില് Flash (*.swf) എന്ന ഓപ്ഷന് മാത്രം സെലക്ട് ചെയ്യുക. തുടര്ന്ന് ഈ രണ്ടു ഫയലുകളും പബ്ലിഷ് ചെയ്യുക. ഈ ഫയലുകളെല്ലാം ഒരേ ഫോള്ഡറിലായിരിക്കണം സേവ് ചെയ്യപ്പെട്ടിരിക്കേണ്ടത് എന്ന കാര്യം പ്രത്യേകം ശ്രദ്ധിക്കുക. Sub.swf എന്ന ഫയലിനെ Main.swf എന്ന ഫയലിലേക്ക് ലോഡ് ചെയ്യിക്കുക എന്നതാണ് നമ്മുടെ ലക്ഷ്യം.
ചിത്രം ശ്രദ്ധിക്കുക. അതില് കാണുന്നത്രയും ഫയലുകളാവും സേവ് ചെയ്യുവാനായി തിരഞ്ഞെടുത്തിരിക്കുന്ന ഫോള്ഡറില് ഇപ്പോള് ഉണ്ടായിരിക്കുക. Main.fla വീണ്ടും തുറക്കുക. ഒരു പുതിയ ലെയര് കൂട്ടിച്ചേര്ത്ത് അതിന് actions എന്നു പേരു നല്കുക. നമുക്ക് മുകളില് പറഞ്ഞ ഫംഗ്ഷനുകളെ ഇനി പരിചയപ്പെടാം.
Syntax:loadMovie(url, target, method);
loadMovieNum(url, level, method);• url:
ലോഡ് ചെയ്യേണ്ട ഫയല് സേവ് ചെയ്തിരിക്കുന്ന ലൊക്കേഷനെയാണ് url
എന്നതുകൊണ്ട് ഉദ്ദേശിക്കുന്നത്. റിലേറ്റീവ് / അബ്സൊല്യൂട്ട് ലൊക്കേഷന് വിലകള് ഇവിടെ നല്കാവുന്നതാണ്.• target:
ലോഡ് ചെയ്യേണ്ടത് ഏത് മൂവിക്ലിപ്പിലേക്കാണെന്ന് ഇവിടെ നല്കുക. അതായത് സ്റ്റേജില് load_here എന്നൊരു മൂവിക്ലിപ്പ് ഉണ്ടെങ്കില് loadMovie(“sub.swf”,“load_here”);
എന്നാണ് നല്കേണ്ടത്. സ്ക്രിപ്റ്റ് എഴുതുന്ന ഫ്രയിം അടങ്ങുന്ന മൂവി ക്ലിപ്പിലേക്കാണ് ലോഡ് ചെയ്യേണ്ടതെങ്കില് this
എന്ന ഓബ്ജക്ട് റഫറന്സും ഉപയോഗിക്കാവുന്നതാണ്.• method:
സാധാരണയായി ഉപയോഗിക്കേണ്ടി വരാറില്ലാത്ത ഒന്നാണിത്. വേരിയബിള് വിലകള് രണ്ട് മൂവിക്ലിപ്പുകള് തമ്മില് കൈമാറേണ്ടതുണ്ടെങ്കില് മാത്രം ഇതുപയോഗിച്ചാല് മതിയാവും. GET
അല്ലെങ്കില് POST
എന്നീ വിലകളാണ് ഇവിടെ നല്കാവുന്നത്.• level:
ഒരു ടാര്ഗറ്റ് മൂവിക്ലിപ്പിലേക്കല്ലാതെ, മറ്റൊരു ലെവലിലേക്കും മൂവി ക്ലിപ്പ് ലോഡ് ചെയ്യുവാന് സാധ്യമാണ്. അതിനായി loadMovieNum()
എന്ന ഫംഗ്ഷന് ഉപയോഗിക്കുക.
Main.fla എന്ന ഫയല് തുറന്ന് actions ലെയറില് ഫ്രയിം ആക്ഷനായി താഴെക്കാണുന്ന സ്ക്രിപ്റ്റ് എന്റര് ചെയ്യുക.
മൂവി റണ് ചെയ്യുമ്പോള് Main.fla-യില് ഉണ്ടായിരുന്ന ചിത്രത്തിനു പകരം Sub.fla-യിലെ ചിത്രം ലോഡ് ചെയ്യുന്നത് കാണാം. അതായത്, Main.swf എന്ന ഫയലിനെ ഒഴിവാക്കി Sub.swf ലോഡാവുകയായിരുന്നെന്ന് സാരം. ഇങ്ങിനെയല്ലാതെ Main.swf-നു മുകളിലായി Sub.swf ലോഡ് ചെയ്യണമെന്നുണ്ടെങ്കില് രണ്ടു രീതിയിലതു സാധ്യമാണ്. loadMovie("sub.swf",this);
loadMovieNum()
എന്ന ഫംഗ്ഷന് ഉപയോഗിക്കുകയാണ് ഒരു രീതി. താഴെക്കാണുന്ന രീതിയില് സ്ക്രിപ്റ്റ് എന്റര് ചെയ്യുക.loadMovieNum("sub.swf", 1);
മൂവി റണ് ചെയ്തു നോക്കുക. ചിത്രത്തില് കാണുന്ന രീതിയിലാവും ഔട്ട്പുട്ട് നമുക്ക് ലഭിക്കുക. ഡിഫോള്ട്ടായി പേരന്റ് മൂവിയുടെ (ഇവിടെ Main.swf) ലെവല് 0 (പൂജ്യം) ആയിരിക്കും. ഒന്ന്, രണ്ട്, മൂന്ന് എന്നിങ്ങനെ മുകളിലേക്ക് വിവിധ ലെവലുകളിലായി കൂടുതല് മൂവി ഫയലുകള് ലോഡ് ചെയ്യുവാന് സാധിക്കും. എന്നാല് ലോഡ് ചെയ്ത മൂവിയുടെ സ്ഥാനവും വലുപ്പവും മറ്റും ഈ രീതിയില് ലോഡ് ചെയ്യുമ്പോള് നിയന്ത്രിക്കുക എളുപ്പമല്ല. അതിനായി താഴെപ്പറയുന്ന രണ്ടാമത്തെ രീതിയാവും കൂടുതല് സൌകര്യപ്രദം. താഴെക്കാണുന്ന സ്ക്രിപ്റ്റ് actions ലെയറില് എന്റര് ചെയ്യുക.
-- or --_root.createEmptyMovieClip("load_here",0);
loadMovie("sub.swf", "load_here");
ഇത്രയും സ്ക്രിപ്റ്റ് നല്കിയ ശേഷം റണ് ചെയ്യുമ്പോഴും മുകളിലെ ചിത്രത്തില് കാണുന്ന രീതിയില് തന്നെയാവും ഔട്ട്പുട്ട് ലഭിക്കുക. ഇവിടെ പുതിയൊരു ഫംഗ്ഷന് ഉപയോഗിച്ചിരിക്കുന്നത് ശ്രദ്ധിക്കുക._root.createEmptyMovieClip("load_here",0);
_root.load_here.loadMovie("sub.swf");
Syntax:createEmptyMovieClip(instanceName, depth);
• instanceName:
പുതുതായി സ്റ്റേജില് ഉണ്ടാക്കുന്ന മൂവിക്ലിപ്പിനു നല്കേണ്ട ഇന്സ്റ്റന്സ് നെയിം. മൂവി റണ് ചെയ്യുന്ന അവസരത്തിലാണ് മൂവിക്ലിപ്പ് ഉണ്ടാക്കുകയെന്നത് പ്രത്യേകമോര്ക്കുക.
• depth:
ലെവലുമായി തെറ്റിദ്ധരിക്കപ്പെടുവാന് സാധ്യതയുള്ള ഒന്നാണ് depth
എന്ന വേരിയബിള്. ഒരോ ലെവലിലും പൂജ്യം മുതല് മുകളിലോട്ട് ഡെപ്ത് വിലകള് ലഭ്യമായിരിക്കും. ഓരോ ഡെപ്ത് പൊസിഷനിലും ഓരോ മൂവിക്ലിപ്പ് പുതുതായി ഉണ്ടാക്കുവാന് സാധിക്കും. സ്റ്റേജിലുള്ള ഓരോ മൂവിക്ലിപ്പിനും ഡിഫോള്ട്ടായി ഒരു ഡെപ്ത് ലഭ്യമായിരിക്കും. പുതുതായി ഉണ്ടാക്കുന്ന മൂവിക്ലിപ്പിന് നല്കേണ്ട ഡെപ്ത് വില ഇവിടെ നല്കുക.
രണ്ടാമത് നമ്മള് ഉപയോഗിച്ച സ്ക്രിപ്റ്റ് താഴെക്കാണുന്ന രീതിയില് വ്യത്യാസപ്പെടുത്തുക._root.createEmptyMovieClip("load_here",0);
_root.load_here.loadMovie("sub.swf");
_root.load_here._x = 125;
_root.load_here._y = 25;
ഇപ്പോള് Sub.swf എന്ന മൂവിയിലെ വൃത്തം ചിത്രത്തില് കാണുന്ന രീതിയില് സ്ക്രീനിന്റെ മധ്യഭാഗത്തായാവും ലോഡ് ചെയ്തിട്ടുണ്ടാവുക. എങ്ങിനെയാണ് X-പൊസിഷന് 125 എന്നും, Y-പൊസിഷന് 25 എന്നും (രണ്ട് മൂവിക്ലിപ്പിന്റേയും വീതി, പൊക്കം എന്നിവയ്ക്കനുസരിച്ച് ഈ വിലകള് വ്യത്യാസപ്പെടും.) ലഭിച്ചതെന്ന് കൂട്ടുകാര് സ്വയം ആലോചിച്ചു നോക്കുക. SWF ഫയലുകള്ക്കു പുറമേ JPEG, PNG, GIF എന്നീ ഫോര്മാറ്റുകളിലുള്ള ചിത്രങ്ങളും ഇതേ രീതിയില് ഒരു ഫ്ലാഷ് ഫയലിലേക്ക് ലോഡ് ചെയ്യുക സാധ്യമാണ്.
(2008 ഫെബ്രുവരി ലക്കം ഇന്ഫോകൈരളി കമ്പ്യൂട്ടര് മാഗസീനില് പ്രസിദ്ധീകരിച്ചത്.)
Description: Movie Loading in Adobe Flash using loadMovie() and loadMovieNum() functions. Syntax and example script included in this tutorial. Usage of createEmptyMovieClip() function is also included in this tutorial. Variables such as depth, instanceName, url, target, method, level etc. are also mentioned.
--
2 comments:
ഫ്ലാഷിലെ മൂവി ലോഡിംഗ് ഫംഗ്ഷനുകളായ loadMovie(), loadMovieNum() എന്നീ ഫംഗ്ഷനുകളെ പരിചയപ്പെടുത്തുന്ന ഒരു പോസ്റ്റ്. ഇവയോടൊപ്പം ഉപയോഗിക്കപ്പെടുന്ന createEmptyMovieClip() എന്ന ഫംഗ്ഷനെക്കുറിച്ചും പ്രതിപാദിച്ചിരിക്കുന്നു.
--
ഈ പോസ്റ്റുകളിലുള്ള വിഷയങ്ങള് ഒരു വീഡിയോ ട്യുട്ടോറിയല് ആക്കിയാല് കുറേ കൂടി എളുപ്പത്തില് മനസ്സിലാക്കമായിരുന്നു. താങ്കളുടെ ഉദ്യമത്തിനു എല്ലാ ഭാവുകങ്ങളും.
നന്ദി.
Post a Comment
40- ദിവസത്തിനു മേല് പ്രായമുള്ള പോസ്റ്റുകളുടെ കമന്റുകള് പരിശോധിച്ചതിനു ശേഷം മാത്രമേ പ്രസിദ്ധീകരിക്കുകയുള്ളൂ. സഹകരിക്കുക.
--