JXBigReelVc.m 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. //
  2. // JXBigReelVc.m
  3. // shiku_im
  4. //
  5. // Created by 123 on 2020/5/25.
  6. // Copyright © 2020 Reese. All rights reserved.
  7. //
  8. #import "JXBigReelVc.h"
  9. #import "LuckyDrawView.h"
  10. #import "UIView+LK.h"
  11. #import "UIViewExt.h"
  12. #import "UIView+Frame.h"
  13. #import "UUMarqueeView.h"
  14. #import "packageRoolModel.h"
  15. #import "JXWheelView.h"
  16. #import "LNNumberScrollAnimatedView.h"
  17. #import <AVFoundation/AVFoundation.h>
  18. #import "JXRelayVC.h"
  19. #import "JXBigReelView.h"
  20. #import "JXALLShowView.h"
  21. @interface JXBigReelVc ()<UUMarqueeViewDelegate,LuckyDrawViewDelegate,AVAudioPlayerDelegate>
  22. @property (nonatomic,strong) NSMutableArray *dataArr;
  23. @property (nonatomic,strong) UUMarqueeView * upwardMultiMarqueeView;
  24. @property (nonatomic,weak) UILabel *cjNums;
  25. @property (nonatomic,strong) UIImageView *bgImageView;
  26. @property (nonatomic,strong) NSMutableArray *jpDataArr;
  27. @property (nonatomic,weak) LNNumberScrollAnimatedView *socreTensDigitAnimation;
  28. @property (nonatomic ,strong) LNNumberScrollAnimatedView *socreDigitAnimation;
  29. @property (nonatomic ,strong) LNNumberScrollAnimatedView *socreAnimation;
  30. @property (nonatomic, strong) NSMutableArray *playerArr;
  31. @property (nonatomic, strong) AVAudioPlayer *numberPlayer;
  32. @property (nonatomic,strong) UIButton *righTopIMG;
  33. @property (nonatomic,strong) UIButton *righBtpIMG;
  34. @property (nonatomic,strong) UIButton *topBombImageView1;
  35. @property (nonatomic,strong) UIButton *topBombImageView2;
  36. @end
  37. @implementation JXBigReelVc
  38. -(void)viewWillAppear:(BOOL)animated
  39. {
  40. if (_upwardMultiMarqueeView) {
  41. [_upwardMultiMarqueeView start];
  42. }
  43. [self loadData];
  44. [g_notify addObserver:self selector:@selector(tongyong) name:@"tongyong" object:nil];
  45. }
  46. - (void)gobackBt{
  47. [g_navigation dismissViewController:self animated:YES];
  48. }
  49. - (void)viewDidLoad {
  50. [super viewDidLoad];
  51. _dataArr=[NSMutableArray array];
  52. _jpDataArr=[NSMutableArray array];
  53. [self defineNavBarXXX:@"幸运老虎机" andRinghtBtnImg:@"zhuanpan"];
  54. _dictMoney=[NSDictionary dictionary];
  55. UIScrollView *imageScrollView =[[UIScrollView alloc]init];
  56. imageScrollView.userInteractionEnabled=YES;
  57. imageScrollView.backgroundColor=kRGBColor(134, 29, 19);
  58. [self.view addSubview:imageScrollView];
  59. [imageScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
  60. make.top.mas_equalTo(JX_SCREEN_TOP);
  61. make.left.mas_equalTo(0);
  62. make.right.mas_equalTo(0);
  63. make.bottom.mas_equalTo(0);
  64. }];
  65. UIImageView *imageBackV=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"背景+装饰2"]];
  66. imageBackV.userInteractionEnabled=YES;
  67. imageBackV.contentMode=UIViewContentModeScaleAspectFill;
  68. [imageScrollView addSubview:imageBackV];
  69. CGFloat imageYW = CGImageGetWidth(imageBackV.image.CGImage);
  70. // iamgeView的H = imageView的宽 / (原始图片的宽 / 原始图片的高)---根据宽高比得出imageView的宽
  71. CGFloat imageH = JX_SCREEN_WIDTH / (imageYW / CGImageGetHeight(imageBackV.image.CGImage));
  72. imageBackV.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, imageH);
  73. UIImageView *luckWheelView = [[UIImageView alloc]initWithFrame:CGRectMake(0, JX_SCREEN_TOP-44,JX_SCREEN_WIDTH-0, JX_SCREEN_WIDTH-0)];
  74. luckWheelView.userInteractionEnabled=YES;
  75. luckWheelView.image=[UIImage imageNamed:@"mm_Lh"];
  76. [imageBackV addSubview:luckWheelView];
  77. //个位十位单独设置,可分别设定各自速度 //WithFrame:CGRectMake(100, 100, 152 , 172)
  78. LNNumberScrollAnimatedView *socreTensDigitAnimation = [[LNNumberScrollAnimatedView alloc] initWithFrame:CGRectMake((JX_SCREEN_WIDTH)/2-152/4, (JX_SCREEN_WIDTH)/2-172/4 , 152/2 , 172/2)];
  79. [luckWheelView addSubview:socreTensDigitAnimation];
  80. socreTensDigitAnimation.userInteractionEnabled=YES;
  81. socreTensDigitAnimation.density = 7;
  82. socreTensDigitAnimation.duration = 1.9;
  83. socreTensDigitAnimation.minLength = 1;
  84. [socreTensDigitAnimation setValue:@9];
  85. [socreTensDigitAnimation sizeToFit];
  86. socreTensDigitAnimation.isAscending = YES;
  87. socreTensDigitAnimation.durationOffset = 0.1;
  88. self.socreTensDigitAnimation = socreTensDigitAnimation;
  89. _righTopIMG=[[UIButton alloc]init];
  90. [_righTopIMG setImage:[UIImage imageNamed:@"拉杆"] forState:UIControlStateNormal];
  91. [imageBackV addSubview:_righTopIMG];
  92. [_righTopIMG mas_makeConstraints:^(MASConstraintMaker *make) {
  93. make.centerY.mas_equalTo(socreTensDigitAnimation.mas_centerY).mas_equalTo(-30);
  94. make.left.mas_equalTo(JX_SCREEN_WIDTH/2+113);
  95. make.width.mas_equalTo(60);
  96. }];
  97. [_righTopIMG addTarget:self action:@selector(rightBTClick:) forControlEvents:UIControlEventTouchUpInside];
  98. _righBtpIMG=[[UIButton alloc]init];
  99. [_righBtpIMG setImage:[UIImage imageNamed:@"拉杆下"] forState:UIControlStateNormal];
  100. [imageBackV addSubview:_righBtpIMG];
  101. _righBtpIMG.hidden=YES;
  102. [_righBtpIMG mas_makeConstraints:^(MASConstraintMaker *make) {
  103. make.centerY.mas_equalTo(socreTensDigitAnimation.mas_centerY).mas_equalTo(40);
  104. //make.right.mas_equalTo(-20);
  105. make.left.mas_equalTo(JX_SCREEN_WIDTH/2+113);
  106. make.width.mas_equalTo(60);
  107. }];
  108. _topBombImageView1=[[UIButton alloc]init];
  109. [_topBombImageView1 setImage:[UIImage imageNamed:@"shou"] forState:UIControlStateNormal];
  110. [imageBackV addSubview:_topBombImageView1];
  111. [_topBombImageView1 mas_makeConstraints:^(MASConstraintMaker *make) {
  112. make.top.mas_equalTo(20);
  113. make.right.mas_equalTo(-20);
  114. }];
  115. //CGAffineTransform transForm=_topBombImageView1.transform;
  116. [self ImageSpring];
  117. //抽奖次数
  118. UILabel *cjNums =[[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(luckWheelView.frame)+40, JX_SCREEN_WIDTH, 12)];
  119. cjNums.text=[NSString stringWithFormat:@"今日剩余抽奖次数:%@",@"0次"];
  120. cjNums.textColor=[UIColor whiteColor];
  121. cjNums.textAlignment=NSTextAlignmentCenter;
  122. cjNums.font=[UIFont systemFontOfSize:20 weight:UIFontWeightMedium];
  123. [imageBackV addSubview:cjNums];
  124. self.cjNums=cjNums;
  125. //抽奖次数
  126. UIImageView *centerZJIMG=[[UIImageView alloc]init];
  127. centerZJIMG.image=[UIImage imageNamed:@"中奖装饰"];
  128. [imageBackV addSubview:centerZJIMG];
  129. [centerZJIMG mas_makeConstraints:^(MASConstraintMaker *make) {
  130. make.top.mas_equalTo(CGRectGetMaxY(cjNums.frame)+70);
  131. make.centerX.mas_equalTo(imageBackV.mas_centerX);
  132. }];
  133. UILabel *zjOrderL =[[UILabel alloc]init];
  134. zjOrderL.text=[NSString stringWithFormat:@"中奖名单"];
  135. zjOrderL.textAlignment=NSTextAlignmentCenter;
  136. zjOrderL.font=[UIFont systemFontOfSize:13 weight:UIFontWeightMedium];
  137. zjOrderL.textColor=[UIColor whiteColor];
  138. [imageBackV addSubview:zjOrderL];
  139. [zjOrderL mas_makeConstraints:^(MASConstraintMaker *make) {
  140. make.centerY.mas_equalTo(centerZJIMG.mas_centerY);
  141. make.centerX.mas_equalTo(imageBackV.mas_centerX);
  142. }];
  143. // 滚动字幕
  144. UIImageView *zhongjiangKIMG=[[UIImageView alloc]initWithFrame:CGRectMake(20, CGRectGetMaxY(cjNums.frame)+100, JX_SCREEN_WIDTH-40, 200)];
  145. zhongjiangKIMG.contentMode=UIViewContentModeScaleToFill;
  146. zhongjiangKIMG.image=[UIImage imageNamed:@"wheelYellow"];
  147. [imageBackV addSubview:zhongjiangKIMG];
  148. _upwardMultiMarqueeView = [[UUMarqueeView alloc]initWithFrame:CGRectMake(0, 15, JX_SCREEN_WIDTH-50, 200-30)];
  149. //_upwardMultiMarqueeView.backgroundColor=[UIColor colorWithWhite:0.0 alpha:0.2];
  150. _upwardMultiMarqueeView.delegate = self;
  151. _upwardMultiMarqueeView.timeIntervalPerScroll = 1.0f;
  152. _upwardMultiMarqueeView.timeDurationPerScroll = 0.5f;
  153. _upwardMultiMarqueeView.touchEnabled = YES;
  154. //_upwardMultiMarqueeView.useDynamicHeight=YES;
  155. //_upwardMultiMarqueeView.itemSpacing=3;
  156. _upwardMultiMarqueeView.layer.cornerRadius=5;
  157. _upwardMultiMarqueeView.layer.masksToBounds=YES;
  158. _upwardMultiMarqueeView.userInteractionEnabled=NO;
  159. [zhongjiangKIMG addSubview:_upwardMultiMarqueeView];
  160. [_upwardMultiMarqueeView reloadData];
  161. //_upwardMultiMarqueeView.frame=zhongjiangKIMG.bounds;
  162. imageScrollView.contentSize=CGSizeMake(0, CGRectGetMaxY(zhongjiangKIMG.frame)+50);
  163. [g_notify addObserver:self selector:@selector(comeBack) name:@"comeBackxxx" object:nil];
  164. }
  165. // 分享以后返回来的弹框
  166. - (void)tongyong{
  167. JXALLShowView *show=[[JXALLShowView alloc]init];
  168. show.backgroundColor=[UIColor colorWithWhite:0.0 alpha:0.2];
  169. show.frame=[UIScreen mainScreen].bounds;
  170. show.nameStr=@" 恭喜您,您已经成功领取奖金,请前往账户中心查看余额,如果长时间未到账请联系在线客服! ";
  171. [[UIApplication sharedApplication].keyWindow addSubview:show];
  172. }
  173. - (void)comeBack{
  174. JXMessageObject *msg=[[JXMessageObject alloc] init];
  175. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];
  176. // msg.toUserId =@"9100";
  177. msg.shareType=@"9100";
  178. msg.fromUserId =MY_USER_ID;
  179. msg.fromUserName = g_server.myself.userNickname;
  180. msg.content = [NSString stringWithFormat:@"\n\n恭喜您 获得了%@等奖 %@元,礼金将自动派发到您的会员账户里,如长时间未收到请及时联系客服进行咨询===jixin%@", _dictMoney[@"rewardCode"],_dictMoney[@"money"],@"JXBigRellVc"];
  181. msg.timeSend = [NSDate date];
  182. JXRelayVC * relay = [[JXRelayVC alloc] init];
  183. NSMutableArray *array = [NSMutableArray arrayWithObject:msg];
  184. relay.relayMsgArray = array;
  185. relay.isUrl = NO;
  186. relay.yunMoney=@"40";
  187. relay.shareType=@"9100";
  188. relay.pushType = @"messageContent";
  189. [g_navigation pushViewController:relay animated:YES];
  190. }
  191. - (void)ImageSpring {
  192. [UIView animateWithDuration:0.5 animations:^{
  193. _topBombImageView1.transform=CGAffineTransformMake(1, 0, 0, 1, 0, 62);
  194. }];
  195. [UIView animateWithDuration:0.8 delay:1.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
  196. _topBombImageView1.transform=CGAffineTransformMake(1, 0, 0, 1, 0, 0);
  197. } completion:^(BOOL finished) {
  198. [self ImageSpring];
  199. }];
  200. }
  201. - (void)rightBTClick:(UIButton *)sender{
  202. sender.hidden=YES;
  203. _righBtpIMG.hidden=NO;
  204. for (int i = 0; i<19; i++) {
  205. [self performSelector:@selector(playSound) withObject:nil afterDelay:0.1];
  206. }
  207. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  208. sender.hidden=NO;
  209. _righBtpIMG.hidden=YES;
  210. });
  211. long time = (long)[[NSDate date] timeIntervalSince1970];
  212. time = (time *1000 + g_server.timeDifference);
  213. NSString *salt = [NSString stringWithFormat:@"%ld", time];
  214. [g_server getUseract_turntableDo:salt andToView:self];
  215. [g_server getUserturntableSurplusCountl:salt andToView:self];
  216. }
  217. #pragma mark - 播放音效
  218. - (void)playSound
  219. {
  220. NSURL *url = [[NSBundle mainBundle] URLForResource:@"number.wav" withExtension:nil];
  221. SystemSoundID soundID = 0;
  222. AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url)
  223. , &soundID);
  224. AudioServicesPlayAlertSound (soundID);
  225. }
  226. /**记载数据*/
  227. -(void)loadData{
  228. [SVProgressHUD show];
  229. long time = (long)[[NSDate date] timeIntervalSince1970];
  230. time = (time *1000 + g_server.timeDifference);
  231. NSString *salt = [NSString stringWithFormat:@"%ld", time];
  232. //获取转盘抽奖用户剩余抽奖次
  233. [g_server getUserturntableSurplusCountl:salt andToView:self];
  234. //[g_server getUseract_act_getTurntable:salt andToView:self];
  235. //获取 转盘最近10条抽奖记录
  236. [g_server getUseact_firstNearTurntableHistory:salt andToView:self];
  237. }
  238. /**
  239. * 滚动字幕代理
  240. */
  241. - (NSUInteger)numberOfVisibleItemsForMarqueeView:(UUMarqueeView*)marqueeView {
  242. return 6;//_dataArr.count;
  243. }
  244. - (NSUInteger)numberOfDataForMarqueeView:(UUMarqueeView*)marqueeView {
  245. return _dataArr ? _dataArr.count : 0;
  246. }
  247. - (void)createItemView:(UIView*)itemView forMarqueeView:(UUMarqueeView*)marqueeView {
  248. // for upwardMultiMarqueeView
  249. //WithFrame:CGRectMake(15, 5.0f,(JX_SCREEN_WIDTH-30)/2 , 16.0f)
  250. UILabel *content = [[UILabel alloc] init];
  251. content.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular];
  252. content.textColor=[UIColor whiteColor];
  253. content.tag = 1001;
  254. [itemView addSubview:content];
  255. [content mas_makeConstraints:^(MASConstraintMaker *make) {
  256. make.top.mas_equalTo(5);
  257. make.left.mas_equalTo(30);
  258. }];
  259. UILabel *priceL = [[UILabel alloc] init];
  260. priceL.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular];
  261. priceL.textAlignment=NSTextAlignmentRight;
  262. priceL.textColor=[UIColor whiteColor];
  263. priceL.tag = 1002;
  264. [itemView addSubview:priceL];
  265. [priceL mas_makeConstraints:^(MASConstraintMaker *make) {
  266. make.top.mas_equalTo(5);
  267. make.right.mas_equalTo(-10);
  268. }];
  269. }
  270. - (void)updateItemView:(UIView*)itemView atIndex:(NSUInteger)index forMarqueeView:(UUMarqueeView*)marqueeView {
  271. packageRoolModel *model=_dataArr[index];
  272. UILabel *content = [itemView viewWithTag:1001];
  273. NSMutableAttributedString *hintString2=[[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"恭喜即信用户%@获得 %@",model.userName,model.money]];
  274. NSRange range2=[[hintString2 string]rangeOfString:model.money];
  275. [hintString2 addAttribute:NSForegroundColorAttributeName value:[UIColor yellowColor] range:range2];
  276. content.attributedText=hintString2;
  277. UILabel *time = [itemView viewWithTag:1002];
  278. NSString *stringTime=[self getTimeFromTimestamp:model.gmtCreate];
  279. time.text = [NSString stringWithFormat:@"%@",stringTime];
  280. }
  281. #pragma mark ---- 将时间戳转换成时间
  282. - (NSString *)getTimeFromTimestamp:(NSString *)timeL{
  283. //将对象类型的时间转换为NSDate类型
  284. NSDate * myDate=[NSDate dateWithTimeIntervalSince1970:[timeL doubleValue]/1000];
  285. //设置时间格式
  286. NSDateFormatter * formatter=[[NSDateFormatter alloc]init];
  287. [formatter setDateFormat:@"YYYY-MM-dd"];
  288. //将时间转换为字符串
  289. NSString *timeStr=[formatter stringFromDate:myDate];
  290. return timeStr;
  291. }
  292. /**
  293. * 返回数据结果
  294. */
  295. -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
  296. [SVProgressHUD dismiss];
  297. if([aDownload.action isEqualToString:act_getTurntable])//获取展示奖品
  298. {
  299. _jpDataArr=[awarJpModel mj_objectArrayWithKeyValuesArray:array1];
  300. }
  301. if([aDownload.action isEqualToString:act_turntableDo])//卷盘抽奖
  302. {
  303. NSString *rewardCode=dict[@"rewardCode"];
  304. [self.socreTensDigitAnimation setValue:[NSNumber numberWithInt:[rewardCode intValue]]];
  305. [self.socreTensDigitAnimation startAnimation];
  306. [self.socreAnimation startAnimation];
  307. _dictMoney=dict;
  308. JXBigReelView *show=[[JXBigReelView alloc]init];
  309. show.backgroundColor=[UIColor colorWithWhite:0.0 alpha:0.7];
  310. show.frame=[UIScreen mainScreen].bounds;
  311. show.strURL=dict;
  312. [[UIApplication sharedApplication].keyWindow addSubview:show];
  313. } if([aDownload.action isEqualToString:act_turntableSurplusCountl])//获取转盘抽奖用户剩余抽奖次
  314. {
  315. _cjNums.text=[NSString stringWithFormat:@"今日剩余抽奖次数:%@次",dict[@"surplusCount"]];
  316. if ([dict[@"surplusCount"] intValue]==0) {
  317. UIAlertView *alertShow=[[UIAlertView alloc]initWithTitle:nil message:[NSString stringWithFormat:@"%@",@"今日抽奖次数已用完"] delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
  318. [alertShow show];
  319. }
  320. } if([aDownload.action isEqualToString:act_firstNearTurntableHistory])
  321. {
  322. dispatch_async(dispatch_get_main_queue(), ^{
  323. _dataArr=[packageRoolModel mj_objectArrayWithKeyValuesArray:array1];
  324. [_upwardMultiMarqueeView reloadData];
  325. });
  326. }
  327. }
  328. -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
  329. [SVProgressHUD dismiss];
  330. NSString * errorCode = [NSString stringWithFormat:@"%@",[dict objectForKey:@"resultMsg"]];
  331. if([errorCode isEqualToString:@"权限验证失败"])
  332. {
  333. }
  334. if([aDownload.action isEqualToString:act_turntableSurplusCountl])//获取转盘抽奖用户剩余抽奖次
  335. {
  336. // UIAlertView *alertShow=[[UIAlertView alloc]initWithTitle:nil message:[NSString stringWithFormat:@"%@",@"今日抽奖次数已用完"] delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
  337. // [alertShow show];
  338. // _cjNums.text=[NSString stringWithFormat:@"今日剩余抽奖次数:%@次",dict[@"surplusCount"]];
  339. }
  340. return 1;
  341. }
  342. @end