Tween springt am Ande bei dynamischer Zeitangabe [Flash 9]
| Beiträge: 15 Registriert: Apr 2011
| 08.08.2011, 12:39
Hallo,
habe hier ein mir völlig unbegreifliches Problem. Will eine Seite mit pseudo 3d Effekt erstellen was eigentlich auch ganz gut funktioniert hat bis ich die Zeitangaben in meinen Tween dynamisch angegeben habe. Hier mal ein kleiner Ausschnitt aus dem Code:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | function resize_lines(){
for( var a:Number = 1; a < nav_points_array.length; a++ ){
var new_animation_speed = animation_speed;
var actual_mc = getChildByName('lines_' + nav_points_array[a]);
var scale_value = 1;
if( actual_nav_point_number > a ){
scale_value = 1 + ( ( actual_nav_point_number - a ) * (focus_strength) ) ;
}else if( actual_nav_point_number < a ){
scale_value = 1 - ( ( a - actual_nav_point_number ) / (focus_strength) ) ;
}
new_animation_speed = animation_speed + scale_value;
if( scale_value < 0 ){
scale_value = 0;
}
if( a == 1 ){
var focus_tweenX_Home:Tween = new Tween(lines_Home, 'scaleX', Strong.easeOut, lines_Home.scaleX, scale_value, new_animation_speed, true);
var focus_tweenY_Home:Tween = new Tween(lines_Home, 'scaleY', Strong.easeOut, lines_Home.scaleY, scale_value, new_animation_speed, true);
focus_tweenY_Home.addEventListener( TweenEvent.MOTION_CHANGE, get_blur_Home );
}
if( a == 2 ){
var focus_tweenX_About:Tween = new Tween(lines_About, 'scaleX', Strong.easeOut, lines_About.scaleX, scale_value, new_animation_speed, true);
var focus_tweenY_About:Tween = new Tween(lines_About, 'scaleY', Strong.easeOut, lines_About.scaleY, scale_value, new_animation_speed, true);
focus_tweenX_About.addEventListener( TweenEvent.MOTION_CHANGE, get_blur_About );
}
|
Ich steuere mehrere MC's mit einer forSchleife an. Nicht wundern weil ich die MC's einzeln anspreche. Habe es nicht anders hinbekommen das die Tweens mit einer Zusatzfunktion unscharf gamcht werden. So, jetzt funktioniert alles bis auf die Tatsache das am Ende der Tweens die Grösse aufeinmal auf den vorherige Wert springt.
Kann auch gerne das ganze Script zeigen wenn es besser zur Veranschaulichung ist. Die Zahlen sind die scalex Angaben des HomeMCs. Dort sieht man sehr schön wie der Tween springt.
Versuche das Problem seit 2 Tagen in den Griff zu bekommen.
Danke für jede Hilfe. | Geändert von SNUFFSEED am 08.08.11 um 13:38 Uhr | |
| | Beiträge: 15 Registriert: Apr 2011
Themenautor/in
| 08.08.2011, 12:50
Habe gerade bemerkt das es nur dann auftritt wenn man bevor der Tween abgelaufen ist einen neuen Menuepunkt auswählt. | | | Beiträge: 15 Registriert: Apr 2011
Themenautor/in
| 08.08.2011, 13:09
Ich fasse es, habs hingekriegt. Endlich. Habe es nur mit nem Stop versehen und es hat gefunzt. Nach 2 Tagen Versuchen. Habe es jetzt so gemacht:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
function resize_lines(){
for( var a:Number = 1; a < nav_points_array.length; a++ ){
var new_animation_speed = animation_speed;
var actual_mc = getChildByName('lines_' + nav_points_array[a]);
var scale_value = 1;
if( actual_nav_point_number > a ){
scale_value = 1 + ( ( actual_nav_point_number - a ) * (focus_strength) ) ;
}else if( actual_nav_point_number < a ){
scale_value = 1 - ( ( a - actual_nav_point_number ) / (focus_strength) ) ;
}
//new_animation_speed = animation_speed + scale_value;
if( scale_value < 0 ){
scale_value = 0;
}
if( actual_mc.tween_x ){
actual_mc.tween_x.stop();
actual_mc.tween_y.stop();
}
actual_mc.tween_x = new Tween(actual_mc, 'scaleX', Strong.easeOut, actual_mc.scaleX, scale_value, new_animation_speed, true);
actual_mc.tween_y = new Tween(actual_mc, 'scaleY', Strong.easeOut, actual_mc.scaleY, scale_value, new_animation_speed, true);
actual_mc.tween_y.addEventListener( TweenEvent.MOTION_CHANGE, get_blur );
function get_blur(e:Event):void{
make_this_blur(actual_mc);
trace( actual_mc.name );
}
}
function make_this_blur(mc_to_blur){
mc_to_blur.visible= 1;
if( ( mc_to_blur.scaleX < 0.05 ) || ( mc_to_blur.scaleX > 4 ) ){
mc_to_blur.visible= 0;
}
if( mc_to_blur.scaleX < 0.9 ){
var array_filter:Array=new Array();
var quality:int=4;
var blur_strength = Math.abs(mc_to_blur.scaleX - 1) * 50;
var filter:BlurFilter=new BlurFilter(blur_strength,blur_strength,2);
array_filter.push(filter);
mc_to_blur.filters=array_filter;
}else{
mc_to_blur.filters=[];
}
}
|
Allerdings spricht jetzt nicht mehr mit dem Blur Effekt den ricvhtigen MC an. Nur immer den letzten durch die For Schleife. Wie kann ich das hinkriegen. Mit e.target geht es nicht da ja target sich auf den Tween bezieht. Ideen??? | | | Beiträge: 15 Registriert: Apr 2011
Themenautor/in
| 08.08.2011, 13:38
Habe auch das geschafft. Habe der Blur Function einfach ne for Schleife reingeballert und so alle MC's angesprochen. | |
| Ähnliche Beiträge zum Thema | |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News
Regeln & Bedingungen
|