News fluide avec arret au passage de la souris et texte html lien cliquable fichier xml

Soyez le premier à donner votre avis sur cette source.

Vue 15 197 fois - Téléchargée 3 177 fois

Description

affiche une zone de texte dont le contenu défile au pixel tres fluides, le format lu est html le fichier news.xml contient le texte de la news au format html, exemple d'utilisation de balises html compatible flash 8

Source / Exemple :


dans le fichier zip

Conclusion :


je n'ai pas trouver de defilement de texte qui soit fluide la plus part utilise le texte.scroll++, qui remonte d'une ligne donc assez saccader, le principe retenu est le suivant:
avec une police de caractere de 12 points environ 17 pixels, le clip._y-- texte est remonter de 1 pixel a la fois pendant 17pixel puis texte.scroll++ qui remonte une ligne complete puis remise a zero de clip texte._y=0 et rebouclage.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

pentahertz
Messages postés
28
Date d'inscription
dimanche 13 avril 2003
Statut
Membre
Dernière intervention
6 novembre 2007
-
import flash.geom.*;

var container:MovieClip = getScrollContainer(this, 210, 110, 1);
//
function getScrollContainer(target:MovieClip, width:Number, height:Number, speed:Number):MovieClip
{
var container:MovieClip = target.createEmptyMovieClip('scrollContainer', target.getNextHighestDepth());
var clipField:MovieClip = container.createEmptyMovieClip('clipField', 0);
clipField.createTextField('field',5,520,5,width,height);
//

var field:TextField = clipField['field'];
field.html = true;
field.multiline = true;
field.type = "dynamic";
field.wordWrap = true;
field.selectable = false;
field.autoSize = true;
field.font = "Arial"
field.mouseWheelEnabled = false;
//

// var format:TextFormat = new TextFormat();
// format.font = "Arial";
// format.textAlign = "Center";
// field.setTextFormat(0, firstIndex, format);

var mask:MovieClip = container.createEmptyMovieClip('mask', 1);
mask._x=520
mask.beginFill(0xFF6600,50);
mask.lineTo(width,0);
mask.lineTo(width,height);
mask.lineTo(0,height);
clipField.setMask(mask);
//
container.onEnterFrame = function():Void
{
if (this.init) {
var over:Boolean = mask.hitTest(_root._xmouse, _root._ymouse);
clipField._y -= (over ? 0 : speed);
//
if (clipField._y<=-clipField._height) clipField._y = height;
}
};
return container;
}
pentahertz
Messages postés
28
Date d'inscription
dimanche 13 avril 2003
Statut
Membre
Dernière intervention
6 novembre 2007
-
voici le system complet
import flash.geom.*;

var container:MovieClip = getScrollContainer(this, 210, 110, 1);
//
function getScrollContainer(target:MovieClip, width:Number, height:Number, speed:Number):MovieClip
{
var container:MovieClip = target.createEmptyMovieClip('scrollContainer', target.getNextHighestDepth());
var clipField:MovieClip = container.createEmptyMovieClip('clipField', 0);
clipField.createTextField('field',5,520,5,width,height);
//

var field:TextField = clipField['field'];
field.html = true;
field.multiline = true;
field.type = "dynamic";
field.wordWrap = true;
field.selectable = false;
field.autoSize = true;
field.font = "Arial"
field.mouseWheelEnabled = false;
//

// var format:TextFormat = new TextFormat();
// format.font = "Arial";
// format.textAlign = "Center";
// field.setTextFormat(0, firstIndex, format);

var mask:MovieClip = container.createEmptyMovieClip('mask', 1);
mask._x=520
mask.beginFill(0xFF6600,50);
mask.lineTo(width,0);
mask.lineTo(width,height);
mask.lineTo(0,height);
clipField.setMask(mask);
//
container.onEnterFrame = function():Void
{
if (this.init) {
var over:Boolean = mask.hitTest(_root._xmouse, _root._ymouse);
clipField._y -= (over ? 0 : speed);
//
if (clipField._y<=-clipField._height) clipField._y = height;
}
};
return container;
}

R_news = new LoadVars();
//objet d'envoie des variables flash --> php
S_news = new LoadVars();

R_news.onLoad = function(Psucces)
{
if (Psucces)
{
//il y'a eu un chargement
if (this.R_nb_news == 0)
{ //la base de donnée est vide
_root.letxt = "Pas de NEWS disponible !";
} else
{ //la base contient au moins une news
_root.letxt = "";
//on affiche cette news
for (var i = 0; i<this.R_nb_news; i++)
{ _root.letxt = this["R_texte_"+i]+"\n";
//var styleObj:TextField.StyleSheet = new TextField.StyleSheet();
//styleObj.onLoad = function(success:Boolean)
//{
// if (success)
// {
// container.clipField.field.styleSheet = styleObj;
// container.clipField.field.htmlText = _root.letext;
// }
}
//styleObj.load("styles.css");
//}
container.clipField.field.htmlText = _root.letxt;
container.init = true;
container.onRollOut();

}
} else
{
//il n'y'a pas eu de chargement
_root.letxt = "Erreur lors du chargement des NEWS...";
}
}
//<<<<<<<<<<<<<<<< On regarde s'il y'a des news >>>>>>>>>>>>>>>>
R_news.load("lirenews.php");



fichier PHP
<?
// connection
mysql_connect("host","nomdebase","password");
mysql_select_db("nomdebase");

// on selectionne le contenu
$d_news = mysql_query("SELECT * FROM news order by id desc");
// on initialise
$i = 0;
$listeResultats = "";
// boucle pour afficher le resultat
while($ligne = mysql_fetch_array($d_news)) {
$date=$ligne[date];
$titre=$ligne[titre];
$texte=$ligne[texte];
$listeResultats .= "&R_date_$i=$date&R_titre_$i=$titre&R_texte_$i=$texte";
// $listeResultats .= "&R_date_$i='ici'$le_titre";
$i++;
}
$listeResultats .= "&R_nb_news=$i&";

// On affiche pour la donner a Flash
echo $listeResultats;
?>
Dodgygeaser
Messages postés
2
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
16 avril 2008
-
Pouvez vous réaliser une maj et modifier l'archive zip avec les nouveaux ajouts svp merci
fabgarou
Messages postés
1
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
15 avril 2009
-
je cherche a intégrer une photo dans ce cette source(genre 1 photo par news).
Sauriez vous m'aider?
paranoixfr
Messages postés
4
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
2 septembre 2009
-
Bonjour! merci pour ce code qui m'a aider à comprendre (enfin pas encore tout à fait) comment interagissait flash avec le xml.
Je suis hyper débutant et j'utilise CS3 en AS2. J'ai pris le temps de bien refaire le code selon les sources citées plus haut et tout va bien. Le problème est que j'aimerai integrer ce code à un swf pour que les news s'affiche sur le site en full flash. J'ai essayé en claquant betement le swf à la racine du site et son code sur une frame, tout va bien sauf que le clip s'arrète dès que l'on se trouve au dessus et sur la gauche du clip (j'ai tenté de comprendre ce systeme de mask puis je me suis dis qu'en loadant le clip avec un load movie tout irait pour le mieux)
J'ai donc crée un clip vide avec ceci par dessus:

onClipEvent (load) {
loadMovie("scroll.swf", this);

}
mais là il me dit "Error opening URL 'file:///H|/travail/site%5Fjulie/site/scroll.swf'"
Et rien n'apparait...
Alors je sais que ça fait surement 300 fois que vous devez voir ce genre de cas mais bon il faut bien commencer un jour et malheureusement après avoir lu et relu les differents sujets à ce propos, je cafouille toujours autant et c'est des plus frustrant...
voilà j'espère que quelqu'un aura une reponse...
MERCI!
Commenter la réponse de top30

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.